Spark离线计算优化——增量小数据集更新全量大数据集

有两个k-v格式的RDD需要union之后再进行reduceByKey操作(如:要将每日增量几十万的数据更新到全量几亿的数据)

优化方案:先将两个RDD公共部分提取出来,然后将公共部分先union再进行reduceByKey,最后将结果和前面没有交集的RDD相加(union)

具体做法:将较小的RDD1的key放入set并广播broadcast,然后将大的RDD2过滤filter出含该key较小RDD21和不含该key较大RDD22,再将RDD1与RDD21进行union-reduceByKey操作(增量数据更新全量数据),结果再union上RDD22。union和reduceByKey的操作的时候注意要reparation。

方案的思路:拿增量数据更新全量数据时,全量数据是不会每条记录都会被更新,只需要拿出需要更新的数据进行更新操作即可。两个大小差异较大的RDD进行union操作会进行大量shuffle,处理速度会很慢,filter之后两个较小的并且大小相似的RDD进行union就快的多(还是需要reparation,保证相同的合理的分区数);大的RDD的reducebykey操作也会很慢(因为存在大量shuffle)。

示意图:

Spark离线计算优化——增量小数据集更新全量大数据集_第1张图片

你可能感兴趣的:(大数据)