`
yychao
  • 浏览: 98518 次
  • 性别: 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查询,理解其执行计划有时会变得相当困难,这就是Hive执行计划可视化工具的作用。这些工具通过图形化的方式展示查询的执行流程,帮助用户更好地理解性能瓶颈和优化查询。 标题中的“Hive执行...

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

    本文将深入探讨如何通过分析SQL语句的执行计划来实现这一目标。执行计划是数据库管理系统(DBMS)执行SQL语句的详细步骤,它揭示了数据的检索路径、使用的索引、排序和连接操作等信息。了解这些信息可以帮助我们找出...

    hive参数配置说明大全

    该参数决定了Hive执行计划的路径,会在程序中自动进行设置,默认值为null。 17. hive.exec.submitviachild 该参数决定了map/reduce Job是否应该使用各自独立的JVM进行提交(Child进程),默认情况下,使用与HQL ...

    Hive优化以及执行原理

    二、Hive执行原理 1. **编译与优化**:HQL被转化为一个抽象语法树(AST),然后经过词法分析、语法分析和优化,生成执行计划。 2. **逻辑优化**:包括消除冗余操作、选择最佳执行路径、合并JOIN操作等。 3. **...

    hive执行文件.zip

    这个压缩包文件"hive执行文件.zip"可能包含用于运行或更新Hive环境的必要组件,尤其是"bin"目录,这是Hive命令行工具和可执行文件所在的地方。"readme.txt"通常会提供关于如何安装、配置或使用这些文件的说明。 当...

    Hive 优化以及执行原理

    4. **优化器**:Hive的CBO(Cost-Based Optimizer)根据数据统计信息和资源成本估算最优执行计划,包括选择最佳的JOIN顺序、分桶和分区等。 5. **执行引擎**:Hive可以使用多种执行引擎,如Tez和Spark,它们能提供...

    HiveSQL执行计划详解.pdf

    ### HiveSQL执行计划详解 #### 一、前言 在大数据处理领域,Hive作为一款广泛使用的数据仓库工具,提供了高效的数据查询与分析能力。为了更深入地理解HiveSQL的执行过程,掌握其执行计划变得尤为重要。执行计划是...

    hive配置说明

    - **含义**:指定Hive执行计划的路径,通常在程序中自动设置。 - **默认值**:`null` - **建议设置**:无需手动设置。 16. **hive.exec.submitviachild** - **含义**:控制map/reduce job是否应该使用各自的...

    hadoop教程Hive执行过程

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

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

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

    hive_windows可执行文件

    在Windows环境下,Hive的使用需要特定的配置和执行文件。以下是对标题和描述中涉及的知识点的详细解释: 1. **Hive在Windows上的安装**: - Hive通常在Linux环境下运行,但在Windows上也可以通过安装Java环境和...

    hive-exec-2.1.1.jar

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

    HIVE安装及详解

    "HIVE安装及详解" HIVE是一种基于Hadoop的数据...* 使用HIVE命令行工具执行查询 * 使用HIVE API开发应用程序 * 使用HIVE与其他工具集成 HIVE是一种功能强大且灵活的数据仓库工具,广泛应用于大数据分析和处理领域。

    如何在python中写hive脚本

    以下将详细介绍如何在Python环境中执行Hive查询和管理Hive脚本。 1. **直接执行Hive SQL脚本** 可以使用`os`模块的`popen`函数直接执行存储在本地的.sql文件。例如: ```python import os hive_cmd = "hive ...

    windows下hive的可执行文件

    【标题】:“Windows环境下Hive的可执行文件” 在Windows操作系统中使用Apache Hive,你需要一个兼容的可执行文件集,以便能够与Hadoop生态系统交互。Hive是一个基于Hadoop的数据仓库工具,它允许用户通过SQL-like...

    hive的一些报错及解决方法

    在某些情况下,Hive执行脚本或查询的速度可能会变得非常慢。 1. **原因分析**: - Hadoop集群中可能存在其他服务运行,这些服务可能会占用大量的计算资源。 - 主节点的选择可能会对性能产生影响。 - **解决步骤*...

    hive学习和习题集

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

    Hive驱动1.1.0.zip

    此外,Hive 1.1.0版本引入了多项改进,例如优化的查询执行计划、对ACID(原子性、一致性、隔离性、持久性)事务的支持以及增强的错误处理机制等。 总的来说,Hive驱动1.1.0是连接和操作Hadoop集群上的Hive数据仓库...

    TPCDS测试-99条Hive基准测试流程

    6. **查询重写**:Hive支持查询重写,通过元数据和统计信息自动优化查询计划。 **五、总结** TPCDS测试是对Hive数据仓库性能的全面评估,涉及多个层面的技术细节。通过这个过程,可以深入理解Hive在大数据环境下的...

    hive相关jar包

    4. **Hive Execution Engine**:这部分jar包包含Hive的执行引擎,它负责将编译后的查询计划转化为MapReduce或Tez或Spark的任务,以便在Hadoop集群上执行。 5. **Hadoop相关依赖**:由于Hive是构建在Hadoop之上的,...

Global site tag (gtag.js) - Google Analytics