这是我的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操作符步骤是什么?我找不到解释这一点的相关文件。
3条答案
按热度按时间n7taea2i1#
hdfs是看板软件开发模型中最常见的pigue架构类型。因此,查询执行计划中有一个reduce步骤。
6yoyoihd2#
这回答了两个问题。
defalut会自动收集统计数据,因此需要一个reduce步骤。
https://cwiki.apache.org/confluence/display/hive/configuration+properties#configurationproperties-统计学
hive.stats.autogather配置单元
默认值: 是的
添加到: Hive0.7 hive -1361
在insert overwrite命令期间自动收集统计信息的标志。
axkjgtzd3#
记录书写也是reduce阶段的一项职责。因为您正在写回分布式fs(hdfs),所以它可以通过生成所需/指定数量的reducer来并行地写。
“stats aggregation”用于从要写入的表中收集统计信息。例如,分区中的行数、列数据模式等。在查询该表时,这些数据用于生成查询计划。