Hive系列文章
Hive系列 (八):Hive中的explode 与 lateral view
一、Hive执行计划
Hive的底层就是MapReduce的编程实现,我们可以通过执行计划详细的了解执行过程。
语法结构
EXPLAIN [EXTENDED|DEPENDENCY|AUTHORIZATION] query
AUTHORIZATION
权限信息
DEPENDENCY
是一些表信息描述
extended
这个可以显示hql语句的语法树,其执行计划大致有三部分:
-
这个语句的抽象语法树
-
这个计划不同阶段之间的依赖关系
-
对于每个阶段的详细描述
简单示例
简单查询:select * from myhive.stu;
展示执行计划
0: jdbc:hive2://master:10000> explain extended select class_id,sum(chinese) from myhive.stu_scores group by class_id;
OK
解读stage
一个Hive任务会包含一个或多个stage(阶段),不同的stage间会存在着依赖关系。
越复杂的查询通常会引入越多的stage,而stage越多就需要越多的时间时间来完成。
一个stage可以是一个Mapreduce任务,也可以是一个抽样阶段,或者一个合并阶段,还可以是一个limit阶段,以及Hive需要的其他某个任务的一个阶段。默认情况下,Hive会一次只执行一个stage,当然如果使用了并行执行,也可以同时执行几个stage。
0: jdbc:hive2://master:10000> explain extended select class_id,sum(chinese) from myhive.stu_scores group by class_id;
OK
STAGE DEPENDENCIES: -------显示各个依赖之间的关系
Stage-1 is a root stage -------阶段一
Stage-0 depends on stages: Stage-1 -------结束阶段,依赖阶段一
STAGE PLANS:
Stage: Stage-1
Map Reduce
Map Operator Tree: -----Map阶段
TableScan
alias: stu_scores -----扫描的表
Statistics: Num rows: 20 Data size: 453 Basic stats: COMPLETE Column stats: NONE ----表信息
GatherStats: false
Select Operator
expressions: chinese (type: int), class_id (type: string)
outputColumnNames: chinese, class_id
Statistics: Num rows: 20 Data size: 453 Basic stats: COMPLETE Column stats: NONE
Group By Operator
aggregations: sum(chinese)
keys: class_id (type: string)
mode: hash
outputColumnNames: _col0, _col1 ---临时字段
Statistics: Num rows: 20 Data size: 453 Basic stats: COMPLETE Column stats: NONE
Reduce Output Operator -----Reduce阶段
key expressions: _col0 (type: string)
null sort order: a
sort order: +
Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 20 Data size: 453 Basic stats: COMPLETE Column stats: NONE
tag: -1
value expressions: _col1 (type: bigint)
auto parallelism: false
######################################################################
# 内容较长,省略部分 #
######################################################################
File Output Operator
compressed: false
GlobalTableId: 0
directory: hdfs://master:9000/user/hive/tmp/hadoop/ad61c2b3-eba3-4024-9737-b7fdc60ff795/hive_2021-09-07_15-02-16_276_8896242971391717266-1/-mr-10001/.hive-staging_hive_2021-09-07_15-02-16_276_8896242971391717266-1/-ext-10002
NumFilesPerFileSink: 1
Statistics: Num rows: 10 Data size: 226 Basic stats: COMPLETE Column stats: NONE
Stats Publishing Key Prefix: hdfs://master:9000/user/hive/tmp/hadoop/ad61c2b3-eba3-4024-9737-b7fdc60ff795/hive_2021-09-07_15-02-16_276_8896242971391717266-1/-mr-10001/.hive-staging_hive_2021-09-07_15-02-16_276_8896242971391717266-1/-ext-10002/
table:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
properties:
columns _col0,_col1
columns.types string:bigint
escape.delim \
hive.serialization.extend.additional.nesting.levels true
serialization.escape.crlf true
serialization.format 1
serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
serde: org.apache.hadoop