Spark离线计算优化——leftOuterJoin优化

两个k-v格式的RDD进行leftOuterJoin操作如果数据量较大复杂度较高的话计算可能会消耗大量时间。

可以通过两种方式进行优化:

1、leftOuterJoin操作前,两个RDD自身进行reduceByKey操作(保证key唯一);

2、两个RDD先map成结果k-v格式,再将两个RDD进行reduceByKey操作(避免使用leftOuterJoin操作),示例:

RDD1:(a, a1)

RDD2:(a, b1)

结果应该为(a,a1,b1)

优化过程:先通过map操作 RDD1(a, a1, '') RDD2(a, '', b1),进行reduceByKey操作得value取不为''的值,即可得到(a,a1,b1)

除了reduceByKey,其实也可以用groupByKey代替leftOuterJoin,但是groupByKey处理结果无法控制value顺序,性能也不如reduceByKey操作。

总结:leftOuterJoin操作都需要进行方式1的优化,保证key唯一;如果leftOuterJoin操作本身消耗时间不长,直接使用leftOuterJoin即可(leftOuterJoin操作耗时  < 两次map+reduceByKey操作耗时),如果时间较长则选择方式2进行优化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值