reduce端join map端讀取兩個表,為兩個表的數(shù)據(jù)分別打上標簽tag,發(fā)送數(shù)據(jù) reduce端根據(jù)分區(qū)分組規(guī)則拿到的數(shù)據(jù)時key相同的數(shù)據(jù),再根據(jù)標簽tag進行相同key的不同value的join操作,完成實際的連接。
map端join將小表復制多份存放在每個map task的內(nèi)存中,然后只掃描大表,對大表中key在小表中存在時,進行一個join拼接操作。
將小表復制的對象方法為DistributedCache.addCacheFile,要使用時再使用相應的提取文件目錄的方法,并用標準IO獲取到數(shù)據(jù)。
semi join先將參與join的表1的key復制到一個新的表3中,然后把新表復制多份到各個map task中,最后將不在新表3的表2的數(shù)據(jù)過濾掉,再進行reduce。