Mapjoin是一種避免避免資料傾斜的手段
允許在map階段進行join操作,MapJoin把小表全部讀入記憶體中,在map階段直接拿另外一個表的資料和記憶體中表資料做匹配,由於在map是進行了join操作,省去了reduce執行的效率也會高很多
在《hive:join遇到問題》有具體操作
在對多個表join連線操作時,將小表放在join的左邊,大表放在Jion的右邊,
在執行這樣的join連線時小表中的資料會被快取到記憶體當中,這樣可以有效減少發生記憶體溢位錯誤的機率
2. 設定引數
hive.map.aggr = true
hive.groupby.skewindata=true 還有其他引數
3.SQL語言調節
比如: group by維度過小時:採用sum() group by的方式來替換count(distinct)完成計算
4.StreamTable
將在reducer中進行join操作時的小table放入記憶體,而大table透過stream方式讀取
Mapjoin是一種避免避免資料傾斜的手段
允許在map階段進行join操作,MapJoin把小表全部讀入記憶體中,在map階段直接拿另外一個表的資料和記憶體中表資料做匹配,由於在map是進行了join操作,省去了reduce執行的效率也會高很多
在《hive:join遇到問題》有具體操作
在對多個表join連線操作時,將小表放在join的左邊,大表放在Jion的右邊,
在執行這樣的join連線時小表中的資料會被快取到記憶體當中,這樣可以有效減少發生記憶體溢位錯誤的機率
2. 設定引數
hive.map.aggr = true
hive.groupby.skewindata=true 還有其他引數
3.SQL語言調節
比如: group by維度過小時:採用sum() group by的方式來替換count(distinct)完成計算
4.StreamTable
將在reducer中進行join操作時的小table放入記憶體,而大table透過stream方式讀取