常见的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

从上面我们看到,处理小表的是一个l
本文介绍了Hive中的三种Join类型:Map-side Join、Reduce-side (Common) Join和SMB (Sort Merge Bucket) Join。Map Join适用于小表和大表的连接,将小表加载到内存中,减少shuffle过程。Reduce Join是最常见的join方式,通过shuffle将相同key的数据分发到同一个reducer。SMB Join利用预分桶优化大表间的join,提高效率。文中还讨论了各种join的适用场景和性能优化。
订阅专栏 解锁全文
808

被折叠的 条评论
为什么被折叠?



