HQL 转换为 MR 任务流程

sql 如何转化为 MR,整体流程讲一下。

/images/hsql.png
hive-sql
  1. 进入程序,利用 Antlr 框架定对 HQL 完成词法语法解析,将 HQL转换为为 AST抽象语法树
  2. 遍历 AST,抽象出查询的基本组成单元 QueryBlock查询块
  3. 遍历 QueryBlock,将其转换为 OperatorTree操作树(也就是逻辑执行计划)
  4. 使用逻辑优化器对 OperatorTree操作树 进行逻辑优化。例如合并不必要的 ReduceSinkOperator减少 Shuffle 数据量
  5. 遍历 OperatorTree,转换为 TaskTree。也就是翻译为 MR 任务的流程,将逻辑执行计划转换为物理执行计划
  6. 使用物理优化器对 TaskTree 进行物理优化
  7. 生成最终的执行计划,提交任务到 Hadoop 集群运行

参考链接