hiveSql 执行计划

大致流程:

1、客户端连接hiveserver2(目前大叔多通过beeline连接,hive cli模式相对较重,且直接略过元数据)建立回话

2、提交sql,通过driver进行编译,解析,优化逻辑计划,生成物理计划

3、对物理计划执行优化,并提交到计算引擎

4、返回结果

详细流程

1、 客户端提交查询语句,被driver处理,转交给编译器进行解析,得到UNresolved Logical plan

ParseDriver parse

2、Antlr 定义SQL语法规则,完成语法,语法解析,将SQL抽象成AST Tree

将SQL进一步抽象结构化 Semantic Analyzer analyze

3、 遍历AST Tree,抽象出查询的基本组成单元QueryBlock

应用HCatalog SemanticAnalyzer.getPlan

4、遍历QueryBlock,编译成OperatorTree

逻辑优化 Optimizer.optimize

5、 逻辑优化OperatorTree,合并不必要的ReduceSinkOperator,减少不必要的shuffle

生成DAG TaskCompiler.genearteTaskTree

6、 遍历OperatorTree,编译成MR任务

改写DAG进行优化 TaskCompiler.optimizeTaskPlan

7、 物理层优化器对MR进行转换

顺序/并发执行Task Task.excute

8、 物理计划执行

原文地址:https://www.cnblogs.com/choice7/p/15554344.html