HQL 转换为 MR 任务流程
sql 如何转化为 MR
,整体流程讲一下。
- 进入程序,利用
Antlr
框架定对HQL
完成词法语法解析,将HQL
转换为为 AST - 遍历
AST
,抽象出查询的基本组成单元 QueryBlock - 遍历
QueryBlock
,将其转换为 OperatorTree(也就是逻辑执行计划) - 使用逻辑优化器对 OperatorTree 进行逻辑优化。例如合并不必要的
ReduceSinkOperator
,减少 Shuffle 数据量 - 遍历
OperatorTree
,转换为TaskTree
。也就是翻译为MR
任务的流程,将逻辑执行计划转换为物理执行计划 - 使用物理优化器对
TaskTree
进行物理优化 - 生成最终的执行计划,提交任务到
Hadoop
集群运行
参考链接