Hive SQL 是怎样解析成 MR job 的?

Johngo学长 Hive 146
  1. Hive使用Antlr实现语法解析.根据Antlr制定的SQL语法解析规则,完成SQL语句的词法/语法解析,将SQL转为抽 象语法树AST.
  2. 遍历AST,生成基本查询单元QueryBlock.QueryBlock是一条SQL最基本的组成单元,包括三个部分:输入 源,计算过程,输出.
  3. 遍历QueryBlock,生成OperatorTree.Hive最终生成的MapReduce任务,Map阶段和Reduce阶段均由 OperatorTree组成。Operator就是在Map阶段或者Reduce阶段完成单一特定的操作。QueryBlock生成 Operator Tree就是遍历上一个过程中生成的QB和QBParseInfo对象的保存语法的属性.
  4. 优化OperatorTree.大部分逻辑层优化器通过变换OperatorTree,合并操作符,达到减少MapReduceJob, 减少shuffle数据量的目的
  5. OperatorTree生成MapReduceJob.遍历OperatorTree,翻译成MR任务.
    • 对输出表生成MoveTask
    • 从OperatorTree的其中一个根节点向下深度优先遍历
    • ReduceSinkOperator标示Map/Reduce的界限,多个Job间的界限
    • 遍历其他根节点,遇过碰到JoinOperator合并MapReduceTask
    • 生成StatTask更新元数据
    • 剪断Map与Reduce间的Operator的关系
  6. 优化任务.使用物理优化器对MR任务进行优化,生成最终执行任务

回复

我来回复
  • 暂无回复内容

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部
最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总