vlambda博客
学习文章列表

面试篇:Hive Sql转换成MapReduce的过程

一、Hive的整体架构图

其中compiler部分负责把HiveSQL转换成MapReduce任务。


二、转换过程


Hive将SQL转化为MapReduce的过程:

  1. Antlr定义SQL的语法规则,完成SQL词法,语法解析,将SQL转化为抽象语法树AST Tree;

  2. 遍历AST Tree,抽象出查询的基本组成单元QueryBlock;

  3. 遍历QueryBlock,翻译为执行操作树OperatorTree;

  4. 逻辑层优化器进行OperatorTree变换,合并不必要的ReduceSinkOperator,减少shuffle数据量;

  5. 遍历OperatorTree,翻译为MapReduce任务;

  6. 物理层优化器进行MapReduce任务的变换,生成最终的执行计划。


总结:HiveSQL ->AST(抽象语法树) -> QB(查询块) ->OperatorTree(操作树)->优化后的操作树->mapreduce任务树->优化后的mapreduce任务树。