zoukankan      html  css  js  c++  java
  • Hive Explain(翻译自Hive wiki)

    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的局部聚合,做最终的聚合的计算。

     翻译自 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Explain

  • 相关阅读:
    在SQL Server通过DBLINK执行ORACLE存储过程
    WIFI无线网卡全双工
    ORACLE判断日期、时间的字符串是否有效日期、时间
    FN_SPLIT-表值函数, 将字符串转列表
    EBS-从职责到报表名
    LeetCode 791 自定义字符串排序
    cgit——github快速下载器
    Ubuntu 16.04下使用git clone时报“gnutls_handshake() failed: Error in the pull function”错误
    LeetCode 1702 修改后的最大二进制字符串
    一个因编码习惯不正确而产生的BUG
  • 原文地址:https://www.cnblogs.com/java20130722/p/3206887.html
Copyright © 2011-2022 走看看