目录
1.查询性能的实用工具
HQL提供了EXPLAIN和ANALYZE命令语句,可以用来查看某个查询的性能。另外,Hive的日志包含了性能方面和线上故障排查的详细信息,可以结合在一起使用,进行性能调优。
1.1EXPLAIN语句
1.1.1EXPLAIN语法
Hive提供了EXPALIN语句,可以用来查看执行某个查询的执行计划(execution plan)。可以使用该命令进行性能分析。
基本的语法为:
EXPLAIN [FORMATTED|EXTENDED|DEPENDENCY|AUTHORIZATION] hql_query
其中可选的四个关键字的具体含义为:
FORMATTED:返回JSON格式的查询计划
EXTENDED:返回更加详细的额外信息,比如文件的路径名
DEPENDENCY:返回JSON格式的输出,该输出包括查询所依赖的表的信息和分区的信息,从Hive v0.10.0开始,才添加的功能。比如
{"input_tables":[{"tablename":"default@music2","tabletype":"MANAGED_TABLE"}],"input_partitions":[]}
AUTHORIZATION:返回所有需要授权的条目,包括运行查询的输入和输出,如果授权失败,还会列出授权失败的信息,从从Hive v0.14.0开始,才添加的功能,比如:
INPUTS:
default@music2
OUTPUTS:
hdfs://kms-1.apache.com:8020/tmp/hive/kms/df84775a-f091-46da-9a76-5721ebb12566/hive_2019-02-28_10-25-56_312_8620977237876835177-1/-mr-10001
CURRENT_USER:
kms
OPERATION:
QUERY
1.1.2查询计划
一个典型的查询计划包括下面三部分:
(1)抽象语法树(AST,Abstract Syntax Tree),Hive使用一个叫做ANTLR的解析生成器自动生成HQL的语法树。
(2)Stage依赖(Stage Dependencies): 列出所有的依赖以及stage的个数
(3)Stage 计划(Stage Plans): 包含了运行job的重要的信息,比如Map/Reduce操作和sort排序
1.1.3例子
hive (default)> explain select name ,count(1) from music2 where date_time="2019-2-16" group by name limit 3;
结果输出:
OK
Explain
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:
TableScan
alias: music2
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Filter Operator
predicate: (date_time = '2019-2-16') (type: boolean)
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Select Operator
expressions: name (type: string)
outputColumnNames: _col0
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Group By Operator
aggregations: count(1)
keys: _col0 (type: string)
mode: hash
outputColumnNames: _col0, _col1
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Reduce Output Operator
key expressions: _col0 (type: string)
sort order: +
Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
TopN Hash Memory Usage: 0.1
value expressions: _col1 (type: bigint)
Reduce Operator Tree:
Group By Operator
aggregations: count(VALUE._col0)
keys: KEY._col0 (type: string)
mode: mergepartial
outputColumnNames: _col0, _col1
Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE
Limit
&n

本文详细介绍了Hive性能调优的各种方法,包括查询性能工具的使用,如EXPLAIN和ANALYZE语句,以及如何查看统计信息。此外,讨论了表设计优化,如分区表、分桶表和索引的创建,以及数据格式和作业调优策略,如文件格式选择、压缩和JOIN优化。通过对这些方面的调整,可以显著提升Hive的查询性能和整体效率。
最低0.47元/天 解锁文章
757

被折叠的 条评论
为什么被折叠?



