Spark join 和 groupBy 的比较

最近在使用spark2 的过程中,发现在join的过程中要产生shuffle。

而每一次的shuffle都会带来大量的cpu计算。


在后来,发现有一个需求:

表A 需要同时join 另外3张表,表B,表C,表D。join的字段是同一个。

方案一:

表A join 表B join 表C join 表D,发生了3次join。

 

方案二:

表A join (表B union 表C union 表D),当然有个前提,表B union 表C union 表D中union的字段必须一模一样。


当时也没有想到方案二,只是之前做Hadoop的时候,多张表关联的过程 有点类似,突然灵光一闪,想到了。

因为union是不会触发shuffle的,

然后修改代码 发现 使用方案二的速度 比 方案一 的速度 快了40%。

只是在使用过程中有限制,

一是 union的字段必须一模一样

二是 如果表B、C、D是非常巨大的表,不可行,三张超大表union之后 shuffle,可想而至 cpu的压力如何。

 

不过针对一般情况,方案二的效率 完败 方案一。

 

大家如果对 大数据岗位有意向 或者想了解spark 可以一起探讨,QQ:1729874221

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值