Hive知识点总结
一、HIVE是什么?
Hive™数据仓库软件有助于使用SQL读取,编写和管理驻留在分布式存储中的大型数据集。可以将结构投影到已存储的数据中。提供了命令行工具和JDBC驱动程序以将用户连接到Hive。
二、理解HIVE架构
驱动器:Driver
1)解析器(parser):将查询字符串转化为解析树表达式。
2)语义分析器(semantic analyzer):将解析树表达式转换为基于块(block-based)的内部查询表达式。
3)逻辑策略生成器(logical plan generator):将内部查询表达式转换为逻辑策略,这些策略由逻辑操作树组成。
4)优化器(optimizer):通过逻辑策略构造多途径并以不同方式重写。
三、HIVE执行流程
流程大致步骤为:
客户端连接Hive的Driver提交请求,Driver访问MetaStoreServer元数据查看文件是否存在,如果不存在就发给客户端文件不存在,如果存在就由Hive的Driver编译解释成MapReduce作业提交给hadoop执行,然后由Driver将结果返回给客户端。
(本质上,所有的SQL语句都会触发MapReduce作业,只不过Hive的底层做了相关优化,叫抓取策略。配置了抓取策略的话,在select *或者是查询本表字段或加了where条件时就不会触发MapReduce作业。)
SQL语句如何转换成MR作业 :使用 操作符
先将sql语句转换成抽象语法树,再转为查询块,再转为逻辑查询计划,然后是物理查询计划,最后优化执行。(hive源码)
如下图所示:
四、HIVE SQL的使用
1.删除数据、分区、库表
– 删除库
drop database if exists db_name;
– 强制删除库
drop database if exists db_name cascade;
– 删除表
drop table if exists employee;
– 清空表
truncate table employee;
– 清空表,第二种方式
insert overwrite table employee select * from employee where 1=0;
– 删除分区
alter table employee_table drop partition (stat_year_month>=‘2018-01’);
– 按条件删除数据
insert overwrite table employee_table select * from employee_table where id>‘180203a15f’;
五、数据类型
数字类
类型 长度 备注
TINYINT(tinyint) 1字节 有符号整型
SMALLINT(smallint) 2字节 有符号整型
INT(int) 4字节 有符号整型
BIGINT(bigint) 8字节 有符号整型
FLOAT(float) 4字节 有符号单精度浮点数
DOUBLE(double) 8字节 有符号双精度浮点数
DECIMAL(decimal) – 可带小数的精确数字字符串
日期时间类
类型 长度 备注
TIMESTAMP(timestamp) – 时间戳,内容格式:yyyy-mm-dd hh:mm:ss[.f…]
DATE(date) – 日期,内容格式:YYYY¬MM¬DD
INTERVAL(interval) – --
字符串类
类型 长度 备注
STRING(string) – 字符串
VARCHAR(varcahr) 字符数范围1 - 65535 长度不定字符串
CHAR(cahr) 最大的字符数:255 长度固定字符串(从hive0.13.0开始提供)
Misc类
类型 长度 备注
BOOLEAN(boolean) – 布尔类型 TRUE/FALSE
BINARY(binary) – 字节序列
复合类
类型 长度 备注
ARRAY(array) – 包含同类型元素的数组,索引从0开始 ARRAY
MAP(map) – 字典 MAP<primitive_type, data_type>
STRUCT(struct) – 结构体 STRUCT<col_name : data_type [COMMENT col_comment], …>
UNIONTYPE(uniontype) – 联合体 UNIONTYPE<data_type, data_type, …>
六、HIVE分区
为了提高查询效率,将不同的数据文件存放到不同的目录,查询时可以查询部分目录,分区的设计要和业务相结合(粒度不能过粗或过细)
删除分区的时候外部表的数据是否会删除?
七、外部表和内部表区别
内部表:
删除表时,元数据与数据都会被删除
外部表:
删除外部表只删除metastore的元数据,不删除hdfs中的表数据
八、HIVE SERDE
九、BEELINE
十、HIVE函数
十一、HIVE参数
十二、动态分区
十三、HIVE分桶
MR时间大部分耗费在资源分配,任务调度
十四、HIVE LATERAL VIEW
十五、视图
100学习笔记
…