浅谈Hive的一些优化
hive调优涉及到压缩和存储调优,参数调优,sql的调优,数据倾斜调优,小文件问题的调优等
1、看懂执行计划
Hive执行计划官方解释在哪?如下连接是Hive官网的Wiki地址
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Explain
语法如下:
EXPLAIN [EXTENDED|CBO|AST|DEPENDENCY|AUTHORIZATION|LOCKS|VECTORIZATION|ANALYZE] query
如下图所示,就是一个简单的执行计划解析数。
其中,stage这个是表达的整个语句需要执行的步骤,图中只有一个,那就表示只需要执行一个步骤
1.1、简单的执行计划
hive> explain select count(*) from t_data1 ;
STAGE DEPENDENCIES:
Stage-1 is a root stage
Stage-0 depends on stages: Stage-1
#说明stage之间的依赖性
STAGE PLANS: #各个stage的执行计划
Stage: Stage-1
Map Reduce #这个stage是一个MR
Map Operator Tree: #Map阶段的操作树
TableScan #扫描表,获取数据
alias: t_data1 扫描的表别名
Statistics: Num rows: 1 Data size: 43835224 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator #选取操作
Statistics: Num rows: 1 Data size: 43835224 Basic stats: COMPLETE Column stats: COMPLETE
Group By Operator #分组聚合操作,不指定Key,只有一个分组
aggregations: count() 聚合操作
mode: hash
outputColumnNames: _col0 输出列名
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator #输出结果给Reduce
sort order: #不排序
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
value expressions: _col0 (type: bigint) #value表达式
Reduce Operator Tree: #Reduce的操作树
Group By Operator #分组聚合操作
aggregations: count(VALUE._col0) 聚合操作
mode: mergepartial 合并各个map所贡献的各部分
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
File Output Operator #文件输出操作
compressed: false 不压缩
Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
table:
input format: org.apache.hadoop.mapred.TextInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Stage: Stage-0 #依赖于Stage1的stage0
Fetch Operator #获取数据操作
limit