蜂巢查询执行计划
问题描述:
这里是我的蜂巢查询蜂巢查询执行计划
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
我有两个相关的查询执行计划问题:
- 为什么会出现在查询计划减少一步?在我的理解中,它需要做的就是将数据从一个HDFS位置复制到另一个位置,这可以通过映射器单独实现。减少步骤与表中存在的分区有关吗?
- 什么是统计汇总运算符步骤出现在第2阶段?我无法找到相关文件解释这一点。
答
这回答了这两个问题。
通过defalut自动收集统计数据,并且需要减少步骤。
hive.stats.autogather
默认值:True
加入:蜂巢0.7与HIVE-1361
的标志,在INSERT期间自动收集统计信息OVERWRITE 命令。
答
- 记录写作也是减少阶段的责任。由于您正在写回分布式FS(HDFS),因此可以通过产生所需/指定数量的减速器来并行写入。
- “统计聚合”用于从您正在写入的表中收集统计信息。 例如,分区中的行数,列数据模式等。此数据用于在查询该表时生成查询计划。