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