reduce端join map端读取两个表,为两个表的数据分别打上标签tag,发送数据 reduce端根据分区分组规则拿到的数据时key相同的数据,再根据标签tag进行相同key的不同value的join操作,完成实际的连接。
map端join将小表复制多份存放在每个map task的内存中,然后只扫描大表,对大表中key在小表中存在时,进行一个join拼接操作。
将小表复制的对象方法为DistributedCache.addCacheFile,要使用时再使用相应的提取文件目录的方法,并用标准IO获取到数据。
semi join先将参与join的表1的key复制到一个新的表3中,然后把新表复制多份到各个map task中,最后将不在新表3的表2的数据过滤掉,再进行reduce。