第一次理解:
對于先掃描大表還是先掃描小表會提高效率飘庄。(在這里假設小表m條數(shù)據(jù)埋同,大表n條數(shù)據(jù)瞧预,m<n)
第一反應是:一樣的。因為小表在前的話窑邦,大表的每一條數(shù)據(jù)都與小表的第一條數(shù)據(jù)比對,是n次壕探,小表一共m條數(shù)據(jù)冈钦,所以此方案一共需要比對n*
m次。同理李请,大表在前的話瞧筛,小表的m條數(shù)據(jù)分別與大表的第一條數(shù)據(jù)比對,是m次导盅,大表一共n條數(shù)據(jù)较幌,所以共比對m*
n次。
大表和小表分別在前
然而白翻,后來發(fā)現(xiàn)忽略了一點乍炉,就是前面那個表的數(shù)據(jù)要加載到map中绢片。這樣的話,小表在前時共需要次數(shù)為:m+m
*
n,而大表在前時共需要加載次數(shù)為:n+m*
n岛琼。又∵m<n底循,所以先掃描小表會提高效率。
第二次理解
hive操作是map端的join槐瑞,小表先放入setup熙涤,然后大表切片,可能有多個切片在不同節(jié)點運行困檩。
如果map緩存大祠挫,隨著maptask增多,drive端壓力太大
(緩存大本身就占用珍貴的網(wǎng)絡資源)