Hive知识点总结

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学习笔记

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值