蜂巢查询执行计划



这是我的蜂巢查询

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

我有两个与查询执行计划有关的问题:

  1. 为什么查询计划中有一个减少步骤?在我的理解中,它所需要做的就是将数据从一个HDFS位置复制到另一个位置,仅映射器就可以实现。减少步骤与表中存在的分区有关吗?
  2. 什么是 stats-aggr运算符阶段2中存在的步骤?我找不到解释这一点的相关文档。

这回答了这两个问题。
统计数据是由Defalut自动收集的,因此需要减少步骤。

https://cwiki.apache.org/confluence/display/hive/configuration properties#configurationproperties-statistics

hive.stats.autogather

默认值:true

添加在:Hive 0.7中,带Hive-1361

在插入覆盖过程中自动收集统计信息的标志命令。

  1. 记录写作也是减少阶段的责任。由于您正在写回分布式FS(HDFS(,因此它可以通过产卵所需/指定数量的还原数来并行写入。
  2. "统计汇总"是用于从您写的表中收集统计数据。例如,分区中的行数,列数据模式等。此数据用于查询该表时生成查询计划。

hdfs是看板软件开发模型中最常见的色素架构类型。出于这个原因,查询执行计划中有一个减少步骤。

最新更新