`
yychao
  • 浏览: 97667 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hive 执行计划

    博客分类:
  • hive
阅读更多

hive执行计划语法

EXPLAIN [EXTENDED] query


EXTENDED参数:输出执行计划中操作符的额外信息;通常,展示物理信息,如文件名等



hive查询转换为一个 有向无环图 的阶段序列;这些阶段可能是 Map/Reduce阶段 或者是执行元数据与文件操作(例如:重命名,移动); explain 输出包括三部分:


  1. 查询语句的抽象语法树
  2. 执行计划不同阶段间的依赖关系
  3. 每个阶段的描述

阶段描述信息以操作符和与其相关元数据来显示 操作序列;操作符元数据有以下东西组成,像 FilterOperator 的过滤表达式;SelectOperator 的 选择表达式;FileSinkOperator 的输出文件名


执行计划语法介绍到此结束,下面给出一个例子。



执行计划示例


EXPLAIN
FROM src INSERT OVERWRITE TABLE dest_g1 SELECT src.key, sum(substr(src.value,4)) GROUP BY src.key;

 

执行计划输出如下:

抽象语法树:


ABSTRACT SYNTAX TREE:
  (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest_g1)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF src key)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 4)))) (TOK_GROUPBY (TOK_COLREF src key))))

 

阶段依赖关系图:


STAGE DEPENDENCIES:
  Stage-1 is a root stage
  Stage-2 depends on stages: Stage-1
  Stage-0 depends on stages: Stage-2

stage-1 是 root 阶段

stage-2在stage-1执行完后执行

stage-0在stage-2执行结束后执行


各阶段执行计划 


STAGE PLANS:
  Stage: Stage-1
    Map Reduce
      Alias -> Map Operator Tree:
        src
            Reduce Output Operator
              key expressions:
                    expr: key
                    type: string
              sort order: +
              Map-reduce partition columns:
                    expr: rand()
                    type: double
              tag: -1
              value expressions:
                    expr: substr(value, 4)
                    type: string
      Reduce Operator Tree:
        Group By Operator
          aggregations:
                expr: sum(UDFToDouble(VALUE.0))
          keys:
                expr: KEY.0
                type: string
          mode: partial1
          File Output Operator
            compressed: false
            table:
                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                output format: org.apache.hadoop.mapred.SequenceFileOutputFormat
                name: binary_table

  Stage: Stage-2
    Map Reduce
      Alias -> Map Operator Tree:
        /tmp/hive-zshao/67494501/106593589.10001
          Reduce Output Operator
            key expressions:
                  expr: 0
                  type: string
            sort order: +
            Map-reduce partition columns:
                  expr: 0
                  type: string
            tag: -1
            value expressions:
                  expr: 1
                  type: double
      Reduce Operator Tree:
        Group By Operator
          aggregations:
                expr: sum(VALUE.0)
          keys:
                expr: KEY.0
                type: string
          mode: final
          Select Operator
            expressions:
                  expr: 0
                  type: string
                  expr: 1
                  type: double
            Select Operator
              expressions:
                    expr: UDFToInteger(0)
                    type: int
                    expr: 1
                    type: double
              File Output Operator
                compressed: false
                table:
                    input format: org.apache.hadoop.mapred.TextInputFormat
                    output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
                    serde: org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDe
                    name: dest_g1

  Stage: Stage-0
    Move Operator
      tables:
            replace: true
            table:
                input format: org.apache.hadoop.mapred.TextInputFormat
                output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
                serde: org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDe
                name: dest_g1

 上例中,包含两个map/reduce 阶段(stage-1,stage-2),一个文件系统相关阶段(stage-0).stage-0将结果从临时目录移动到dest_g1表相应的目录下;


一个Map/Reduce阶段有两部分组成:

  1. 从表别名到Map Operator Tree映射:该映射通知Mapper,其操作树被调用来处理特定表的行或者前一个Map/Reduce阶段的输出数据;上例stage-1中,src表的行被以Reduce Output Operator为根的操作符树处理;在stage-2中,stage-1输出行被stage2中以Reduce Output Operator为根的操作符树处理;这两个Reduce Output Operator 根据元数据中展示条件 分区数据到Reducers
  2. Reduce Operator Tree:处理Map/Reduce Job 中Reducers所有数据行;在stage-1中, Reducer Operator Tree执行部分聚合;在stage-2中, Reducer Operator Tree从stage-1的部分聚合结果计算最终聚合结果


hive执行计划作用

分析作业执行过程,优化作业执行流程,提升作业执行效率;例如,数据过滤条件从reduce端提前到map端,有效减少map/reduce间shuffle数据量,提升作业执行效率;


提前过滤数据数据集,减少不必要的读取操作;例如: hive join 操作先于 where 条件顾虑,将 分区条件放入 on语句中,能够有效减少 输入数据集;

 

分享到:
评论

相关推荐

    hive执行计划可视化工具

    hive执行计划可视化工具

    通过分析SQL语句的执行计划优化SQL语句

    NULL 博文链接:https://desert3.iteye.com/blog/758643

    HiveSQL执行计划详解.pdf

    HiveSQL执行计划详解.pdf

    hadoop教程Hive执行过程

    hive执行过程,便于初学者尽快掌握hive开发所需知识和技能。

    Hive优化以及执行原理

    Hive优化以及执行原理,一位前辈总结的hive知识,个人觉得非常有用,资源难找,现在贡献给大家,独乐乐不如众乐乐。

    Hadoop开发者第一期入门专刊

    42 Hive 执行计划解析 50 MapReduce 中的Shuffle 和Sort 分析 53 海量数据存储和计算平台的调试器研究 56 探讨MapReduce 模型的改进 58 运行eclipse 编译出的Hadoop 框架 59 表关联在MapReduce 上的实现 63 Hadoop ...

    hive Windows 可执行文件

    windows平台下,hive可执行文件,完全没有问题,可以使用。 将这个bin目录覆盖hive原有的bin目录即可

    hive学习和习题集

    (2)编译器(Physical Plan):将AST编译生成逻辑执行计划。 (3)优化器(Query Optimizer):对逻辑执行计划进行优化。 (4)执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是...

    hive-exec-2.1.1.jar

    这个组件负责解析 SQL 查询,生成执行计划,并协调与 Hadoop 集群的交互以执行这些计划。它还包括了用于数据处理的逻辑和与 Hadoop 组件(如 MapReduce、Tez 或 Spark)的集成。 具体来说,hive-exec 可能包括以下...

    hive执行文件.zip

    将解压的bin覆盖目标bin文件夹即可

    Hive 优化以及执行原理

    hive调优总结,网络上分享的hive常见优化细节,这是一个前辈的总结,个人觉得,总结得相当到位和详细

    windows下安装hive2.3.3缺少的可执行文件

    windows10下安装hive2.3.3的时候,无法执行hive命令,原因是官方下载文件中缺少可执行文件(好多个cmd文件),安装的时候无法执行成功。下载后,解压替换hive的bin目录即可执行成功。

    Hive 简明教程.pdf

    第二部分:如果想能写出高效的Hive 语句,必须要先了解Hive 执行原理,然后掌握一系列 的优化方法。所以第二部分主要内容是Hive 原理与优化。 第三部分:讲解Hive 的一系列技术细节,以满足技术人员想了解技术细节的...

    Hive on Spark EXPLAIN statement

    Hive on Spark EXPLAIN statement : 讲述了 Common Join / Map join / Bucket Map Join / Sorted Merge Bucket Map Join / skew join 在explain 中的 树结构 。In Hive, command EXPLAIN can be used to show the ...

    hive.sql执行文件.rar

    hiveSQL执行文件

    hive的一些报错及解决方法

    hive的一些报错及解决方法:连接报错、执行脚本卡住、内存溢出报错、表死锁问题

    hive_windows可执行文件

    windows下hive可执行文件,下载解压后替换hive安装目录 下的bin目录即可

    hive-3.1.1安装包

    Hive也不是分布式计算框架,Hive的核心工作就是把sql语句翻译成MR程序去执行,不用我们再手动去写MapReduce了。 Hive也不提供资源调度系统,默认由Hadoop集群中的YARN集群来调度。 Hive可以将结构化的数据映射为...

    Hive新手学习资料之Hive入门与实战.+Hive用户手册+hive函数大全中文版资源合集

    hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加...

Global site tag (gtag.js) - Google Analytics