数仓工具—Hive语法之map join、reduce join、smb join(8)

常见的join

开始之前我们先说一下join 的定义,然后我们后面在说不同的join,有时候我们需要同时获取两张表或三张表或更多表的信息,我们需要把不同的表关联起来,然后获取数据,这个就是join, 关联的过程就是join 的过程

笼统的说,Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join),以及Sort Merge Bucket Join 这种划分方式体现在是实现功能的方式上是不同的

除此之外还有不同类型的join,例如 LEFT|RIGTH|FULL OUTER JOIN、 LEFT SEMI JOIN、主要体现在实现的功能是不一样的

Map-side Join

map Join的主要思想就是,当关联的两个表是一个比较小的表和一个特别大的表的时候,我们把比较小的表直接放到内存中去,然后再对比较大的表格进行map操作,join就发生在map操作的时候,每当扫描大的表中的中的一行数据,就要去查看小表的数据,哪条与之相符,继而进行连接。

这样的join并不会涉及reduce操作,自然没有shuffle减少了数据通过网络传输造成的高成本和高延迟了,因为Join 是在map 端完成的,所以又叫做map join

image-20210102141134910

从上面我们看到,处理小表的是一个local task ,它首先将我们的数据封装成了HashTable(key,value),然后将其输出

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不二人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值