- SemiJoin
SemiJoin,也叫半连接,是从分布式数据库中借鉴过来的方法。它的产生动机是:对于 reduce
side join,跨机器的数据传输量非常大,这成了 join 操作的一个瓶颈,如果能够在 map 端过
滤掉不会参加 join 操作的数据,则可以大大节省网络 IO。
实现方法很简单:选取一个小表,假设是 File1,将其参与 join 的 key 抽取出来,保存到文
件 File3 中,File3 文件一般很小,可以放到内存中。在 map 阶段,使用 DistributedCache 将
File3 复制到各个 TaskTracker 上,然后将 File2 中不在 File3 中的 key 对应的记录过滤掉,剩
下的 reduce 阶段的工作与 reduce side join 相同。



