1,hive是什么
将SQL转换为MapReduce程序。
2,为什么使用hive
用写SQL语句来代替直接写MapReduce程序。
3,hive与hadoop的关系
4,hive与传统数据库对比
| ||
5,Hadoop 计算框架的特性
5.1,什么是数据倾斜
由于数据的不均衡原因,导致数据分布不均匀,造成数据大量的集中到一点,造成数据热点5.2,Hadoop框架的特性
不怕数据大,怕数据倾斜jobs数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几个jobs,耗时很长。原因是map reduce作业初始化的时间是比较长的。
sum,count,max,min等UDAF,不怕数据倾斜问题,hadoop在map端的汇总合并优化,使数据倾斜不成问题。
count(distinct ),在数据量大的情况下,效率较低,因为count(distinct)是按group by 字段分组,按distinct字段排序,一般这种分布方式是很倾斜的。
6,hive的原理
6.1,hive的架构
6.2,hive的执行流程
编译器将一个Hive QL转换操作符
操作符是Hive的最小的处理单元
每个操作符代表HDFS的一个操作或者一道MapReduce作业
操作符 | 描述 |
TableScanOperator | 扫描hive表数据 |
ReduceSinkOperator | 创建将发送到Reducer端的<Key,Value>对 |
JoinOperator | Join两份数据 |
SelectOperator | 选择输出列 |
FileSinkOperator | 建立结果数据,输出至文件 |
FilterOperator | 过滤输入数据 |
GroupByOperator | GroupBy语句 |
MapJoinOperator | /*+mapjoin(t) */ |
LimitOperator | Limit语句 |
UnionOperator | Union语句 |
6.3,编译过程