hive優化-資料傾斜優化

丫丫GoUp發表於2018-08-16

資料傾斜解決方法,通常從以下幾個方面進行考量:

 業務上丟棄
 
•  不參與關聯:在on條件上直接過濾
•  隨機數打散:比如 null、空格、0等“Other”性質的特殊值 
 
傾斜鍵記錄單獨處理
 
•  Join:找出傾斜key,把對應資料插入臨時表,如果該表是小表,使用map join解決;
•  Group by: set hive.groupby.skewindata = true
 
 資料重分佈
 
•  語法:Distribute By
•  場景:為下一個Stage的Map輸入做負載均衡
•  代價:多一個Job 

 

舉個例子:count distinct

–count(distinct ),在資料量大的情況下,效率較低,如果是多count(distinct )效率更低,因為count(distinct)是按group by 欄位分組,按distinct欄位排序,一般這種分佈方式是很傾斜的。

   *淘寶一天30億的pv,按性別分組,分配2個reduce,每個reduce處理15億資料。

   *58房產一天1.5億的pv,統計全國分二手房、租房等業務線的詳情頁pv、uv等指標,採用多case when的方式,僅分配一個reduce。

消除count disitnct,可以嘗試“使用者標籤”法。

 

相關文章