reduce端join map端讀取兩個表,為兩個表的數據分別打上標簽tag,發(fā)送數據 reduce端根據分區(qū)分組規(guī)則拿到的數據時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。