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