在项目开发过程中,使用hive进行数据处理和分析的时候经常会出现问题,如:GC,数据倾斜,这些都是老生常谈的问题了,下面概括几个常用的hive调优方法
Hive调优
1)map端join
1)如果不指定MapJoin或者不符合MapJoin的条件,那么Hive解析器会将Join操作转换成CommonJoin,即:在Reduce阶段完成join。
容易发生数据倾斜。可以用MapJoin把小表全部加载到内存在map端进行join,避免reducer处理。
2)set hive.auto.convert.join=true;
2)行列过滤
行处理:在SELECT中,只拿需要的列,如果有,尽量使用分区过滤,少用SELECT*
列处理:表关联的时候,先在on前面加上过滤条件,这样会先过滤再关联表;如果在where后面加过滤条件,会先全表关联再过滤
3)使用Tez计算引擎
命令行:set hive.execution.engine=tez;
修改配置文件
4)采用分区、分桶技术
但少用动态分区
5)并行度优化
1)调整map数量
增加map数量的情况:任务产生的小文件大小接近块大小,但是文件的结构非常简单,只有一个或两个字段,却有上千万条的数据,如果map数量过少,每个map处理的逻辑又非常复杂的话&

最低0.47元/天 解锁文章
5882

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



