【Hive-优化】Hive的优化方式四(数据倾斜优化)
1)关联优化器
在Hive的一些复杂关联查询中,可能同时还包含有group by等能够触发shuffle的操作,有些时候shuffle操作是可以共享的,通过关联优化器选项,可以尽量减少复杂查询中的shuffle,从而提升性能。
set hive.optimize.correlation=true;
2)数据倾斜Skewin
2.1.基础查询数据倾斜
如果数据量很大或者出现了数据倾斜比较严重的情况,如何来优化呢?
(1)map join
(2)Bucket-Map join
(3)SMB join
2.2.表连接数据倾斜(Join skew in)
(1)运行时优化(默认关闭)
set hive.optimize.skewjoin=true;
如果大表和大表进行join
操作,则可采用skewjoin
(倾斜关联)来开启对倾斜数据的优化。
-
skewjoin原理:
1、对于skewjoin.key,在执行job时,将它们存入临时的HDFS目录,其它数据正常执行
2、对倾斜数据开启map join操作(多个map并行处理),对非倾斜值采取普通join操作
3、将倾斜数据集和非倾斜数据集进行合并Union操作。
-
开启skewin以后,究竟多大的数据才会被认为是倾斜了的数据呢?
#默认值100000。 set hive.skewjoin.key=100000