Hivesql ->mapreduce 简单的可以分为六个阶段:
1、SQL词法,语法解析生成抽象语法树AST Tree Antrl定义了SQL语法规则,完成SQL词法、语法解析,将SQL转化为抽象语法树AST Tree,树上的每个节点就是一个ASTNode;
2、遍历AST Tree,抽象出查询的基本组成单元QueryBlock QueryBlock就是一个子查询
Select * from (select * from b) a;
QueryBlock1:select * from b;
QueryBlock2:select * from a;
3、遍历QueryBlock,翻译成执行操作树OperatorTree
4、逻辑层优化器进行OperatorTree变化,合并不必要的ReduceSinkOperator,减少shuffle数据量
5、遍历OperatorTree,翻译成MapReduce任务(物理执行计划)
6、物理层优化器进行MapReduce任务的变换,生成最终的执行计划
下面对hive-2.3.9源码进行详细的分析:
CliDriver类:
685行:main()
687行:run()
694行:!oproc.process_stage1(args) 解析hiveconf参数,如日志级别;
719行:!oproc.process_stage2(ss) 解析hive -i -f -e -S -H -hivevar等 如:hive -e "select * from student";
760行:

最低0.47元/天 解锁文章
4万+

被折叠的 条评论
为什么被折叠?



