前言:數據傾斜大多數是由於數據本身的分布不均勻。故而需要我們使用諸如列裁剪、Mapjoin、GroupBy等方法進行處理。

數據傾斜表現:

1、任務日誌進度長度為99%,在日誌監控進度條顯示只有幾個reduce進度一直沒有完成。

2、某一reduce處理時長>平均處理時長

3、job數過多

數據傾斜原因分析:

1、key分布不均

2、業務數據本身存在不均勻情況

3、關聯欄位重複數據較多

解決方法:

1、join定位:第一:主表驅動表應該選擇分布均勻的表作為驅動表,並做好列裁剪。

第二:大小表Join,需要記得使用map join,小表會先進入內存,在map端即會完成reduce.

第三:此種情形最為常用!!!大表join大表時,關聯欄位存在大量空值null key

解決方法為把空值null key變成字元串加上隨機數!!!可以0把由於數據傾斜而導致的數據集中到一個reduce上處理的情形,打散到不同的reduce上,9生成多個reduce!!!

on case when haha.id is null then concat(hive,rand()) else
haha.id end = xixi.id

2、不同數據類型關聯也會產生數據傾斜滴!

嘿嘿嘿:例如註冊表中ID欄位為int類型,登錄表中ID欄位即有string類型,也有int類型。當按照ID欄位進行兩表之間的join操作時,默認的Hash操作會按int類型的ID來進行分配,這樣會導致所有string類型ID的記錄統統統統統統都都都都分配到一個Reduce裡面去!!!

解決方法:把數字類型轉換成字元串類型

on haha.ID = cast(xixi.ID as string)

往期精彩回顧

第一篇 | 深圳購房投資筆記(一)-樓市有泡沫嗎?(上)

第二篇 |深圳購房投資筆記(二)-樓市有泡沫嗎?(中)

第三篇|深圳購房筆記(三)-親身經歷貨幣棚改化(上)

第四篇|深圳購房投資筆記(四)-親身經歷貨幣化棚改(下)

第五篇|深圳購房投資筆記(五)-因為朋友,被杭州所迷惑

第六篇|深圳購房投資筆記(六)-為何放棄在杭州定居購房

第七篇|深圳購房投資筆記(七)-神奇的深圳人口?(下)

第八篇|深圳購房投資筆記(八)-為何選擇在深圳定居購房?

第九篇|深圳購房投資筆記(九)-中國最大的炒房散戶歐成效先生

第十篇|深圳購房投資筆記(十)-深圳樓市拐點已來臨

第十一篇|深圳購房投資筆記(十一)-樓市謠言四處飛,我向人民說實話(上)

第十二篇|深圳購房投資筆記(十二)-樓市謠言四處飛,我想人民說實話(下)

第十三篇|深圳購房投資筆記(十三)-民間炒房高手財上團(上)

第十四篇|深圳購房投資筆記(十四)-2019年的這一切都是必然的

第十五篇|深圳購房投資筆記(十五)-2019年我們的處境

深圳購房投資筆記(十六)從19年看李嘉誠為何資產

圖片筆者攝於2017年9月23日18:10分,於江西省龍虎山爬山途中。好風光給人力量!


推薦閱讀:
相关文章