• [Hive笔记]Hive编译器


    Hive编译器

    编译器主要部分

    Hive的编译器主要有以下几个部分:

    名称简要描述
    解析器 将查询语句转换为解析树(AST Tree)。
    语义分析器 将解析树转换为内部查询表示(此时任然是QueryBlock)。作为此步骤的一部分,将验证列名称并执行类似*的扩展。在此阶段还会执行类型检查和任何隐式类型转换。如果对象是分区表,则会收集该表的所有表达式(partitionKey=<Val>),以便稍后对分区进行过滤。如果查询已指定采样(SAMPLE),则也会收集该采样以便稍后使用。
    逻辑计划生成器 将内部查询表示转换为逻辑计划,该计划由算子树组成。此步骤还包括优化器,对生成的算子树进行优化
    查询计划生成器 将逻辑计划转换为一系列map-reduce任务。递归遍历运算符树,将其分解为一系列map-reduce可序列化任务,这些任务稍后可以提交到Hadoop分布式文件系统的map-reduce框架中。

    Hive SQL的编译过程

    SQL转化为MapReduce任务的编译过程分为六个阶段:

    • Antlr定义SQL的语法规则,完成SQL词法,语法解析,将SQL转化为抽象语法树AST Tree
    • 遍历AST Tree,抽象出查询的基本组成单元QueryBlock
    • 遍历QueryBlock,将其转换为算子树OperatorTree
    • 逻辑层优化器进行OperatorTree优化,合并不必要的ReduceSinkOperator,减少shuffle数据量
    • 遍历OperatorTree,将其转化为MapReduce任务
    • 物理层优化器进行MapReduce任务的变换,生成执行计划
  • 相关阅读:
    第八周课程总结&实验报告(六)
    第七周课程总结&实验报告(五)
    第六周实验总结&学习总结
    关于我
    各种公告

    笔记 综合
    多项式全家桶
    FFT,NTT 笔记
    省选复习
  • 原文地址:https://www.cnblogs.com/lestatzhang/p/10611344.html
Copyright © 2020-2023  润新知