hive查询执行计划

rks48beu  于 2021-05-29  发布在  Hadoop
关注(0)|答案(3)|浏览(461)

这是我的Hive查询

Insert into schemaB.employee partition(year) 
select * from schemaA.employee;

下面是此查询生成的查询执行计划。

hive> explain <query>;

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

STAGE PLANS:
  Stage: Stage-1
    Map Reduce
      Map Operator Tree:
          TableScan
            alias: employee
            Statistics: Num rows: 65412411 Data size: 59121649936 Basic stats: COMPLETE Column stats: NONE
            Select Operator
              expressions: Col1 (type: binary), col2 (type: binary), col3 (type: array<string>), year (type: int)
              outputColumnNames: _col0, _col1, _col2, _col3
              Statistics: Num rows: 65412411 Data size: 59121649936 Basic stats: COMPLETE Column stats: NONE
              Reduce Output Operator
                key expressions: _col3 (type: int)
                sort order: +
                Map-reduce partition columns: _col3 (type: int)
                Statistics: Num rows: 65412411 Data size: 59121649936 Basic stats: COMPLETE Column stats: NONE
                value expressions: _col0 (type: binary), _col1 (type: binary), _col2 (type: array<string>), _col3 (type: int)
      Reduce Operator Tree:
        Extract
          Statistics: Num rows: 65412411 Data size: 59121649936 Basic stats: COMPLETE Column stats: NONE
          File Output Operator
            compressed: true
            Statistics: Num rows: 65412411 Data size: 59121649936 Basic stats: COMPLETE Column stats: NONE
            table:
                input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
                output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
                serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
                name: schemaB.employee

  Stage: Stage-0
    Move Operator
      tables:
          partition:
            year 
          replace: false
          table:
              input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
              output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
              serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
              name: schemaB.employee

  Stage: Stage-2
    Stats-Aggr Operator

我有两个关于查询执行计划的问题:
为什么查询计划中有reduce步骤?在我的理解中,它所需要做的只是将数据从一个hdfs位置复制到另一个位置,这可以由Map器单独完成。reduce步骤是否与表中的分区有关?
阶段2中的stats aggr操作符步骤是什么?我找不到解释这一点的相关文件。

n7taea2i

n7taea2i1#

hdfs是看板软件开发模型中最常见的pigue架构类型。因此,查询执行计划中有一个reduce步骤。

6yoyoihd

6yoyoihd2#

这回答了两个问题。
defalut会自动收集统计数据,因此需要一个reduce步骤。
https://cwiki.apache.org/confluence/display/hive/configuration+properties#configurationproperties-统计学
hive.stats.autogather配置单元
默认值: 是的 
添加到: Hive0.7  hive -1361
在insert overwrite命令期间自动收集统计信息的标志。

axkjgtzd

axkjgtzd3#

记录书写也是reduce阶段的一项职责。因为您正在写回分布式fs(hdfs),所以它可以通过生成所需/指定数量的reducer来并行地写。
“stats aggregation”用于从要写入的表中收集统计信息。例如,分区中的行数、列数据模式等。在查询该表时,这些数据用于生成查询计划。

相关问题