接上文提到的离线处理流程,本文主要阐述一下Hive的几种调优方式
HIve调优
数据倾斜
数据倾斜:数据分散度不够,导致数据几种在某几台机器计算,从而使得计算速度大幅度下降
数据倾斜的原因归纳:
- group by
- distinct XX
- join
调优方式
调优参数
- 在map中做部分聚焦操作,效率会提高,不过可能需要更多内存
set hive.map.aggr = true; - 生成的查询计划会有两个MRjob,实现数据倾斜时负载均衡
set hive.groupby.skewindata = true;
map side join
- 较小和较大表连接时,较小表放在内存中,再与较大表进行map操作
set hive.auto.convert.join = true
并行化执行
每个查询会被Hive转换为多个阶段,关联性不大时,可以并行执行,减少整个任务的运行时间
-
开启任务并行执行
set hive.exec.parallel = true; -
设置同一个sql允许最大并行线程数
set hive.exec.parallel.thread.number = 8;综上所诉,如果再开发过程遇到相关问题,可以尝试使用以上设置语句尝试一下,或许有意想不到的速度和性能的提升。