第一次理解:
對(duì)于先掃描大表還是先掃描小表會(huì)提高效率。(在這里假設(shè)小表m條數(shù)據(jù),大表n條數(shù)據(jù),m<n)
第一反應(yīng)是:一樣的。因?yàn)樾”碓谇暗脑?,大表的每一條數(shù)據(jù)都與小表的第一條數(shù)據(jù)比對(duì),是n次,小表一共m條數(shù)據(jù),所以此方案一共需要比對(duì)n*m次。同理,大表在前的話,小表的m條數(shù)據(jù)分別與大表的第一條數(shù)據(jù)比對(duì),是m次,大表一共n條數(shù)據(jù),所以共比對(duì)m*n次。

大表和小表分別在前
然而,后來(lái)發(fā)現(xiàn)忽略了一點(diǎn),就是前面那個(gè)表的數(shù)據(jù)要加載到map中。這樣的話,小表在前時(shí)共需要次數(shù)為:m+m
*n,而大表在前時(shí)共需要加載次數(shù)為:n+m*n。又∵m<n,所以先掃描小表會(huì)提高效率。
第二次理解
hive操作是map端的join,小表先放入setup,然后大表切片,可能有多個(gè)切片在不同節(jié)點(diǎn)運(yùn)行。
如果map緩存大,隨著maptask增多,drive端壓力太大
(緩存大本身就占用珍貴的網(wǎng)絡(luò)資源)