30.7数据倾斜解决方案之六:使用随机数进行Join
本节讲解使用随机数进行Join,首先讲解什么叫使用随机数进行Join来解决数据倾斜问题,然后讲解如何使用随机数?使用随机数进行Join来解决数据倾斜问题使用场景、案例实战、注意事项等内容。
30.7.1什么叫使用随机数进行Join来解决数据倾斜问题?使用随机数进行Join来解决数据倾斜问题:如果2个RDD的数据中某个Key或者某几个Key数据的Value值特别多,2个RDD进行Join的时候发生了数据倾斜。此时,我们可以将2个RDD数据倾斜的Key的都加上随机数,通过改变并行度来解决数据倾斜问题。
30.7.2如何使用随机数?倾斜的Key加上随机数:对Key进行map操作加上随机数,计算出结果以后再次进行map,将随机数去掉,这样计算得到的结果和原先不加随机数的结果是一样的,好处是可以控制并行度。
随机数的使用:
1、 对RDD1使用mapToPair算子进行转换,使用Randomrandom = new Random();构建一个随机数,例如任意一个100以内的随机数random.nextInt(100),将其赋值给prefix;然后将prefix加上原来的Key值组拼成新的Key值:prefix_Key。
2、 对RDD2中使用mapToPair算子进行转换,对于RDD1相同的Key值