zoukankan      html  css  js  c++  java
  • [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任务的变换,生成执行计划
  • 相关阅读:
    触发器和存储过程简述
    sql笔记
    AES加密解密代码
    动态获取实体类及类中方法
    springboot metrics elk
    深入浅出Spring Security
    RandomValueStringGenerator
    ExceptionUtils
    spring.main.web-application-type: none
    excel前80%平均分
  • 原文地址:https://www.cnblogs.com/lestatzhang/p/10611344.html
Copyright © 2011-2022 走看看