如何扩容
两个RDD数据都特别多且倾斜的Key有成千上万个,该如何解决数据倾斜的问题?初步的想法:在倾斜的Key上加上随机数。该想法的原因:Shuffle的时候把Key的数据可以分到不同的Task里。加随机数有一个前提:必须知道哪些是倾斜的Key。但是,现在的倾斜的Key非常多,成千上万,所以如果说采样找出倾斜的Key的话,并不是一个非常好的想法。
下一个想法是考虑进行扩容:首先,什么是扩容?扩容就是把该RDD中的每条数据变成5条、10条、20条等。例如,RDD中原来是10亿条数据,扩容后可能变成1000亿条数据。
其次,如何扩容?flatMap中对要进行扩容的每条数据都通过0~N−1个不同的前缀变成N条数据。
问题:N的值可以随便取吗?需要考虑当前程序能够使用的Core的数目。
答案:N的数字一般不能取得特别大,通常都会小于50,否则对磁盘、内存和网络都会形成极大的负担,如会造成OOM。
接下来:
(1)将另外