前言: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,就可以开启并发执行。