`
yugouai
  • 浏览: 498488 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

HIVE Explain

 
阅读更多

EXPLAIN语法

Hive提供EXPLAIN命令,显示查询的执行计划。语法如下:

EXPLAIN [EXTENDED] query

 

EXPLAIN语句使用EXTENDED,提供执行计划关于操作的额外的信息。这是典型的物理信息,如文件名。

 

Hive查询被转换成序列(这是一个有向无环图)阶段。这些阶段可能是mapper/reducer阶段,或者做metastore或文件系统的操作,如移动和重命名的阶段。 EXPLAIN的输出包括三个部分:

 

  • 查询的抽象语法树
  • 执行计划计划的不同阶段之间的依赖关系
  • 每个场景的描述

场景的描述,显示了与元数据相关操作的操作序列。元数据会包括FilterOperator的过滤器表达式,或SelectOperator的查询表达式,或FileSinkOperator的文件输出名字。

 

例子

考虑下面的EXPLAIN查询:

 

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是根阶段,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
 

这个例子,有2个map/reduce阶段(Stage-1和Stage-2),还有一个文件系统相关阶段(Stage-0).Stage-0简单把结果从临时目录,移动到表dest_g1相关的目录。

 

map/reduce阶段包含2部分:

map/reduce场景本身包含2个部分:表映射到Map运算符树的别名--这个映射, 通知mapper运算符树调    用,处理特定表的行或先前的map/reduce阶段的结果。在上面例子的Stage-1,原始表的行,被Reduce输出运 算符的运算符树处理。类似,在Stage-2中,Stage-1的结果的行被Reduce输出运算符的其他运算符树处理。每个Reduce输出操作符,根 据元数据的标准,把数据分区到reducers。

 

Reduce操作符树——这个操作符树处理map/reduce任务的reducer的所有行。在例子的Stage-1,Reducer操作符树开展局部聚合,而Stage-2的reduers操作符树对Stage-1的局部聚合,做最终的聚合的计算。

分享到:
评论

相关推荐

    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执行计划可视化工具

    - **Hive自带的Explain命令**:虽然它不是图形化的,但可以通过输出文本信息来查看执行计划的概要。 - **Hue**:一个流行的Hadoop用户界面,包括一个内置的Hive编辑器,它可以显示执行计划的可视化表示。 - **Tez...

    hive开发中常遇到的坑

    Hive提供了`EXPLAIN`关键字帮助开发者理解SQL查询的执行计划,这对于优化查询性能至关重要。 ##### 示例SQL与解释: ```sql EXPLAIN SELECT x.a, x.b FROM (SELECT 'a' AS a, 'b' AS b FROM default.dual) x LEFT ...

    hive技术分享文档

    性能优化是Hive使用中的重要环节,包括选择合适的文件格式、使用分区和桶、优化JOIN操作、避免全表扫描、使用explain命令预估查询计划等。此外,Hive还可以通过Tez或Spark作为执行引擎,以提升查询速度。 七、Hive...

    HIVE-SQL开发规范.docx

    - 使用EXPLAIN查看执行计划,优化查询逻辑。 - 避免全表扫描,利用分区和桶化。 - 选择合适的JOIN类型,如LEFT SEMI JOIN比INNER JOIN更高效。 - 使用CBO(Cost-Based Optimizer)进行成本估算,自动选择最优执行...

    Hive基本操作命令大全

    * EXPLAIN 查询:`EXPLAIN SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);` Hive提供了多种方式创建表、加载数据、查询数据和管理数据,使得大规模数据的管理和分析变得更加方便和...

    Hive用户指南(Hive_user_guide)_中文版pdf

    9. **性能监控与调试**:Hive提供了日志系统和Explain命令来帮助用户理解和优化查询性能。通过分析执行计划,可以找出可能的瓶颈并进行优化。 10. **最佳实践**:学习Hive不仅要掌握其语法和特性,还要了解如何根据...

    Hive查询优化整理与Hive简易版思维导图

    1. **Explain命令**:使用EXPLAIN分析查询执行计划,了解Hive如何处理SQL,找出性能瓶颈。 2. **Hive Metastore优化**:保持Metastore整洁,定期清理不再使用的表和分区,确保元数据检索高效。 3. **配置调优**:...

    Hive收集的电子文档

    10. **优化技巧**:Hive提供了多种优化手段,如EXPLAIN计划查看任务执行逻辑,使用CLUSTER BY或DISTRIBUTE BY进行数据分布控制,以及使用JOIN优化等。 通过深入学习和理解这些知识点,你可以有效地使用Hive进行大...

    Apache Hive Cookbook_Code 源码

    8. **Explain命令**:通过使用Explain,用户可以了解Hive如何解析和执行查询,这对于调试和优化查询性能非常有帮助。 总的来说,《Apache Hive Cookbook》的源码部分为学习和实践Hive提供了一个宝贵的资源库,读者...

    第6章:Hive性能优化及Hive3新特性1

    使用`Explain`命令查看查询执行计划,有助于理解Hive如何转换HQL为MapReduce任务,从而进行性能调优。此外,调整MapReduce的相关参数(如mapred.map.tasks、mapred.reduce.tasks等)也能改善性能。 6. **Join方案...

    hive官方文档整理

    使用EXPLAIN查看执行计划,分析优化路径;使用Bucket Map Join优化Join操作;以及使用Hive的缓存机制提升查询速度。 8. **Hive与其它大数据组件的协同**:Hive可以与HBase、Impala、Pig等工具配合使用,实现更复杂...

    Hive练习数据包.zip

    9. **性能优化**:Hive支持多种优化策略,如EXPLAIN计划查看查询执行步骤,增加切分键以优化JOIN,选择合适的数据存储格式(如Parquet或ORC)以提高查询速度等。 在“data”这个文件夹中,你可能会找到一些示例数据...

    Hive用户指南.zip

    以及使用EXPLAIN查看查询计划,调整查询语句。 六、Hive与其他系统集成 Hive可以与多种大数据生态系统的组件无缝集成,如Pig、HBase、Spark等。例如,Hive可以通过Hive SerDe(Serialization/Deserialization)接口...

    hive测试数据

    7. **优化查询**:包括使用Hive的EXPLAIN命令理解查询执行计划,以及使用JOIN优化、减少笛卡尔积、使用Bucketing和Skew Join等技术提高性能。 8. **Hive与Hadoop生态系统集成**:Hive可以与其他Hadoop组件(如HDFS...

    dbvis中hive驱动

    4. 图形化查询计划:通过"Explain"功能,查看Hive如何解析和执行你的HQL查询,帮助优化查询性能。 五、Hive驱动的更新与管理 "压缩包子文件的文件名称列表"中提到的“hive驱动”可能是指Hive的JDBC驱动jar文件。在...

    hive调优总结文档-hive tuning ppt

    - **使用EXPLAIN命令**:分析查询计划,找出潜在的性能瓶颈。 8. **监控与日志**: - **监控系统资源**:定期检查Hadoop集群资源使用情况,及时调整资源分配。 - **日志分析**:通过Hive和YARN的日志,找出慢...

    大数据hive数据倾斜,hive-sql优化

    1. 数据倾斜判断:使用Hive的EXPLAIN命令来判断数据倾斜。 2. 数据倾斜解决方法:使用Hive的优化方法,如谓词下推、使用增量分区等来解决数据倾斜问题。 其他Hive常见问题 1. 死锁处理方法:使用Hive的锁机制来...

    hive高级分析函数与优化.rar_hive_hive 函数优化_hive 分析 大数据_hive高级优化_oldwlc

    高级优化包括表和列的压缩、数据倾斜处理、Join优化、SubQuery优化、以及使用Explain命令分析查询计划等。压缩可以减小存储空间,数据倾斜优化是解决数据分布不均问题,Join优化涉及MapJOIN、BroadcastJOIN等,...

    Hive编程指南-2013.12.pdf

    3. 使用Hive的EXPLAIN命令预览查询计划,识别并调整可能的性能瓶颈。 4. 利用WHERE子句过滤大量数据,避免全表扫描。 5. 分区裁剪:通过WHERE子句指定分区,只处理相关分区。 6. 使用_TECHNICAL_视图预处理数据,...

Global site tag (gtag.js) - Google Analytics