前言:Hive调优是日常工作中比较常见的问题,本文简要总结一下常用的调优方法。
一、代码层面的优化
1.去重两种方式:distinct和group by。推荐使用group by来对数据去重。distinct会将相同的key shuffle到一个reduce task中处理,group by 会启用多个reduce task来对数据进行分组去重。
2. 在做具体业务时,尽量明确具体的字段内容,避免使用select * 。
3.在使用join时,可以先过滤表中的数据之后再进行join。
二、小文件过多
1.使用 hive 自带的 concatenate 命令,自动合并小文件
2.使用hadoop的archive将小文件归档
3.在map执行前合并小文件,减少map数:使用CombineHiveInputFormat对小文件进行合并
set hive.input.format= org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
三、并行执行
通过设置参数hive.exec.parallel值为true,就可以开启并发执行。

本文介绍了Hive调优的常用方法,包括代码层面的优化,如使用group by代替distinct,避免select *,以及在join前过滤数据。此外,还讨论了处理小文件过多的问题,如使用concatenate命令和hadoop archive,以及通过设置 CombineHiveInputFormat 进行合并。并行执行和JVM重用也是提升效率的关键,通过开启hive.exec.parallel和调整相关参数可以实现。最后,推测执行可以加速作业完成,通过mapreduce.map.speculative和mapreduce.reduce.speculative参数启用。
最低0.47元/天 解锁文章
669

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



