分布式系统如何实现垮库join
========
分布式系统如何实现垮库join:
1.小表做广播 look up join,用索引读取大表。
2.如果两个表都很大:1)先按照join的key读取两个表(比如走索引),再merge;2.按照join的key将数据shuffle到多个节点计算。
3.F1 论文里讲了另一种方法,表之间可以建立层级关系,父子表之间公用相同的 primary key prefix,这样不同的 table 中具有相同 pk 前缀的 row 会存放在相邻的位置, 如果按照这些 key 做 inner join,可以直接顺序 scan。不过这个需要特定的存储模型以及和业务相关的 schema 设计。
========
在hive中
按join的阶段不同,可分为reduce阶段的jion(叫command join),在map阶段jion(叫map join)
https://www.cnblogs.com/yyy-blog/p/7077481.html 这篇博文写得挺好,其中有hivejoin过程的图解。大数据相关技术中基本都有map,shuffle,reduce过程。
hive join的原理和机制
在map阶段,必须做的一步是将数据转换成kw,这一步必不可少。