回覆列表
  • 1 # 上進的白雲5

    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方式讀取

  • 中秋節和大豐收的關聯?
  • 蒙自市石漠化分佈廣泛的原因?