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)。

示意图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值