Hive执行流程
Hive执行流程
•编译器将一个Hive QL转换操作符
•操作符是Hive的最小的处理单元
•每个操作符代表HDFS的一个操作或者一道MapReduce作业
Operator
•Operator都是hive定义的一个处理过程
•Operator都定义有:
•protected List <Operator<? extends Serializable >> childOperators;
•protected List <Operator<? extends Serializable >> parentOperators;
•protected boolean done; // 初始化值为false
•所有的操作构成了 Operator图,hive正是基于这些图关系来处理诸如limit, group by, join等操作
Hive构建在Hadoop之上
(1)HQL中对查询语句的解释、优化、生成查询计划是由Hive完成的
(2)所有的数据都是存储在Hadoop中
(3)查询计划被转化为MapReduce任务,在Hadoop中执行(有些查询没有MR任务,如:select * from table)
(4)Hadoop和Hive都是用UTF-8编码的
Hive编译器的组成:
Hive编译流程如下
Hive编译过程
基本流程为:
将HiveQL转化为
1)抽象语法树
2)再转为查询块
3)然后转为逻辑查询计划
4)再转为物理查询计划
5)最终选择最佳决策的过程。