HiveSQL ->AST(抽象语法树) -> QB(查询块) -> OperatorTree(操作树) ->优化后的操作树 ->mapreducer任务树 -> 优化后的mapreducer任务树
Parser:将HQL转化成抽象语法树
SemanticAnalyzer:将抽象语法书换成查询块
LogicPlanGenerator:将查询块转化成查询计划
LogicalOptimizer:重写逻辑查询计划
PhysicalPlanGenerator:将逻辑计划转换成物流计划(M/R jobs)
PhysicalOptimizer: 选择最佳的侧略
过程描述如下:
SQL Parser: Antlr定义SQL语法规则,完成SQL词法,语法解析,将SQL转化为抽象语法树AST Tree;
Semantic Analyzer:遍历AST Tree,抽象出查询的基本组成单元QueryBlock;
Logical plan:遍历QueryBlock,翻译为执行操作树OperatorTree;
Logical plan optimizer:逻辑层优化器进行Operator Tree变换,合并不必要的ReduceSinkOperator,减少shuffle数据量;
Physical plan:遍历Operator Tree,翻译为MapReduce任务;
Logical plan optimizer:物理层优化器进行MapReduce任务的变换,生成最终的执行计划;
因篇幅问题不能全部显示,请点此查看更多更全内容