hive
hive基础
大数据特性与应用 分布式架构概念 Hadoop2.x系统介绍 掌握hive基础建表,以及表格式 了解hive查询 了解正则表达式
1、hive的简介‘’
hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类sql的查询功能 hive的本质: hive本身并不存储任何数据,用hdfs存储数据,用MapReduce计算数据 披着sql外衣的MapReduce ---- sql ---- mapreduce
Hive在Hadoop生态体系中
hive ------- 类sql语句 ----- 依赖于hadoop hive安装路径 cd /opt/modules/hive-1.2.1 启动 bin/hive 官网:hive.apache.org
use hadoop29;
desc hadoop29;
先创建数据
vi st.txt,以空格形式展现
查看表信息
查看表信息: desc student; desc formatted student; 加载本地数据: load data local inpath ‘/home/hadoop/st.txt‘ into table student;
select * from student; student.id student.name NULL NULL 解析不到数据 NULL NULL因为没有按指定的分割符号进行导入数据
重新建立新表格student1
create table student1( id int, name string )row format delimited fields terminated by ‘ ‘;
load data local inpath ‘/home/hadoop/st.txt‘ into table student1; select * from student1; 加载hdfs上数据: load data inpath ‘hdfs路径‘ into table student; load data inpath ‘/test29/st.txt‘ into table student1; bin/hdfs dfs -put /home/hadoop/st.txt /test29 相当于把hdfs上对应数据移动到hdfs对应的表目录中 MySQL 写时模式 int --- string 在写入数据时就对数据进行检查 hive 读时模式 在读取数据时才检查数据 drop table student; exit;
/user/hive/warehouse ----- hive的数据仓库目录
hive作业1
1:hive的本质是什么?
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。 本质是:将HQL转化成MapReduce程序
3:hive查询数据时全部显示为null,是什么原因导致的?
导入数据时的解析不到数据,显示为null 建表 时需要指定列分隔符与导入表格数据之前的分隔符分隔符保持一致 create table student1( id int, name string )row format delimited fields terminated by ‘\t‘;
hive建表方式
common : 基础模块为其他模块提供服务 hdfs: 存储数据管理数据 namenode 主 1 管理元数据信息 datanode 从 多个 存储具体的数据 yarn: 作业调度和资源管理 resourcemanager:管理整个集群的计算资源 主 nodemanager:管理自己所在节点的资源 从 mapreduce : 编程模型 分布式并行计算模型
先启动hadoop再启动hive
启动所有的节点: sbin/start-all.sh 关闭 sbin/stop-all.sh hive 依赖于Hadoop,用hdfs存储数据,用MapReduce计算数据 工具----- 披着sql外衣的MapReduce---- sql----mapreduce计算数据 hive 安装目录:/opt/modules/hive-1.2.1/ 启动: bin/hive
普通创建表方法:
员工编号,员工姓名,职位,上司,入职日期,薪资,奖金,部门编号 create table emp( empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int ) row format delimited fields terminated by ‘\t‘;
上传本地文件到linux,使用xhell工具
Windows ------ linux ----- hive(表)----hdfs
load data local inpath ‘/home/hadoop/emp.txt‘ into table emp; 另外一种方法:加载hdfs上的数据: load data inpath ‘hdfs路径‘ into table emp;
子查询建表方法:
子查询:可以克隆一个表的结构以及表的数据 create table emp_1 as select * from emp; 克隆三列 create table emp_2 as select ename,sal,deptno from emp;as select 建表方式非常的灵活,做数据清洗的时候,经常会用到
like建表
like: 克隆了表的结构,但是不复制表的数据 create table emp_like like emp;
创建表时 指定位置
create table emp_man( empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int ) row format delimited fields terminated by ‘\t‘ location ‘/user/hive/warehouse/hadoop29.db/emp‘;
show tables
drop table emp_man;
在删除内部表时,会删除表的元数据信息同时删除表所对应的hdfs上的表目录 不利于分享数据
建立外部表
关键字:external create external table emp_ext( empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int ) row format delimited fields terminated by ‘\t‘ location ‘/user/hive/warehouse/hadoop29.db/emp‘;
desc formatted emp_ext;
Location: hdfs://ibeifeng.com:8020/user/hive/warehouse/hadoop29.db/emp Table Type: EXTERNAL_TABLE 外部表
drop table emp_ext; 在删除外部表时,只删除表的元数据信息,不会删除hdfs上对应的表目录 利于分享数据,很多情况下都是去关联一个已存在的数据
create external table emp_ext( empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int ) row format delimited fields terminated by ‘\t‘; load data local inpath ‘/home/hadoop/emp.txt‘ into table emp_ext; drop table emp_ext;
临时表
临时表:temporary
create temporary table emp_tep( empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int ) row format delimited fields terminated by ‘\t‘; load data local inpath ‘/home/hadoop/emp.txt‘ into table emp_tep; desc formatted emp_tep; Table Type: MANAGED_TABLE 内部表 临时表也是内部表的一种 关闭hive:自动删除临时表的元数据及数据文件drop table emp_tep; 删除临时表的元数据及数据文件 分区表:关键字partitioned by----也是内部表 hive 表 --- 映射的是hdfs上的一个目录---- 子目录 ---- 子目录 分区表 ----- 分目录
create table emp_part( empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int )partitioned by(day string) row format delimited fields terminated by ‘\t‘;
分区:
分区字段:创建表时指定分区字段,不能和普通字段同名,加载数据时指定加载到具体的分区,分区字段会在hdfs形成目录,在查询时分区字段可以作为普通字段使用load data local inpath ‘/home/hadoop/emp.txt‘ into table emp_part partition(day=‘20191201‘); load data local inpath ‘/home/hadoop/emp.txt‘ into table emp_part partition(day=‘20191202‘); load data local inpath ‘/home/hadoop/emp.txt‘ into table emp_part partition(day=‘20191203‘); select * from emp_part; select * from emp_part where day=‘20191201‘;
二级分区:
load data local inpath ‘/home/hadoop/emp.txt‘ into table emp_part22 partition(day=‘20191201‘,hour=‘12‘); load data local inpath ‘/home/hadoop/emp.txt‘ into table emp_part22 partition(day=‘20191201‘,hour=‘13‘); load data local inpath ‘/home/hadoop/emp.txt‘ into table emp_part22 partition(day=‘20191202‘,hour=‘12‘); select * from emp_part22 where day=‘20191201‘ and hour=‘12‘; 查看分区的信息: show partitions emp_part22; 增加分区: alter table emp_part22 add partition(day=‘20190101‘,hour=‘14‘); load data local inpath ‘/home/hadoop/emp.txt‘ into table emp_part22 partition(day=‘20190101‘,hour=‘14‘); 删除分区: alter table emp_part22 drop partition(day=‘20190101‘,hour=‘14‘);
外部分区表:
create external table emp_part( empno int, ename string, job string, mgr int, hiredate string, sal double, comm double, deptno int )partitioned by(day string) row format delimited fields terminated by ‘\t‘;
window和linux文件互传
点击xshell,新建文件传输,可以实现
11
相关推荐
eternityzzy 2020-07-19
archive 2020-05-28
zzjmay 2020-05-17
tugangkai 2020-05-09
genshengxiao 2020-06-26
victorzhzh 2020-06-16
taisenki 2020-05-27
archive 2020-07-30
成长之路 2020-07-28
taisenki 2020-07-05
tugangkai 2020-07-05
SignalDu 2020-07-05
zlsdmx 2020-07-05
tomson 2020-07-05
tugangkai 2020-07-04
tomson 2020-07-05