對於 nested loop join,左表稱為 outer table,又稱 driving table,右表稱為 inner table
對於 hash join,左表稱為 build table,右表稱為 probe table
對於 merge join,左表稱為 first table,右表稱為 second table
對於 nested loop join,outer table 和 inner table 概念是怎麼來的呢?我有時會弄混,直到學會了下面的理解方法。不妨考慮兩層 for 迴圈:
foreach (i in m)
foreach (j in n)
if (i == j) print "match";
上面**的意思是對於集合 m 中的每乙個 i,在集合 n 中尋找和 i 相等的值。m 就是 outer table, n 就是 inner table。這種情況下, inner、outer 的概念就非常清晰自然了。
對於 hash join,理解了 hash join 的實現方法,就自然理解 build、probe 的概念了。簡而言之,就是用左表 build 乙個 hashtable,用右表的每一行去 probe 看是否命中,命中則表示 row match。
merge join 就沒什麼好說的了。左右表之間沒什麼優先順序,那就取名 first second 好了,如果下面的表更多,來個 third 也是可以的,那就是 multi-way merge join 了。
Hive的三種Join方式
reduce join在hive中也叫common join或shuffle join 如果兩邊資料量都很大,它會進行把相同key的value合在一起,正好符合我們在sql中的join,然後再去組合,如圖所示。1 大小表連線 如果一張表的資料很大,另外一張表很少 1000行 那麼我們可以將資料量少的...
Hive的三種Join方式
hive reduce join在hive中也叫common join或shuffle join 如果兩邊資料量都很大,它會進行把相同key的value合在一起,正好符合我們在sql中的join,然後再去組合,如圖所示。1 大小表連線 如果一張表的資料很大,另外一張表很少 1000行 那麼我們可以將...
Hive Hive的三種Join方式
hive中的join可分為三種,分別是map join reduce join和smb join,本文簡單介紹這三種join的原理和機制。mapjoin的主要意思就是,當鏈結的兩個表是乙個比較小的表和乙個特別大的表的時候,我們把比較小的table直接放到記憶體中去,然後再對比較大的 進行map操作。...