map join的与Reduce Join效率对比

MAPJION会把小表全部读入内存中,在map阶段直接拿另外一个表的数据和内存中表数据做匹配,由于在map是进行了join操作,省去了reduce运行的效率也会高很


使用一个表测试,该表时5分钟表,数据很少,大概60多w。


测试日志里包含多个字段,其中有uid和uip。测试场景为给出2个uid,取uid共同的uip。


三个不同uid


select /*+ MAPJOIN(c) */
distinct  c.ip from
(select /*+ MAPJOIN(a) */
a.ip from 
    (select ip from t where uid=uid1) a 
    join
    (select ip from t  where uid=uid2) b
on a.ip=b.ip 
) c
join
(select ip from t where uid=uid3) d
on c.ip=d.ip
耗时 79.915 seconds  用4个mr


不适用mapjoin

select
distinct  c.ip from
(select
a.ip from 
    (select ip from t where uid=uid1) a 
    join
    (select ip from t  where uid=uid2) b
on a.ip=b.ip 
) c
join
(select ip from t where uid=uid3) d
on c.ip=d.ip

4个mr 耗时:90.932 seconds

结果一致.


效率提高了12%

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值