2021 2 25資料傾斜問題的討論

2021-10-20 07:09:29 字數 908 閱讀 8442

有這樣乙個rdd1

(a,1),(a,2),(a,3),(b,1),(c,1)

這樣乙個rdd2

(a,100),(b,90),(c,60)

將這兩個rddjoin的時候:

(a,(1,100)),(a,(2,100)),(a,(3,100)),(b,(1,90)),(c,(1,60))

發生資料傾斜,怎麼解決這個場景下的資料傾斜:

這個解決方案一定要牢牢記著,只要面試官不low一定會問你

可以先把rdd1進行拆分:

將導致資料傾斜的key分到乙個rdd,資料比較均勻的key分到另外乙個rdd

把rdd1拆成兩個rdd:

rdd1_1:(a,1),(a,2),(a,3)

rdd1_2:(b,1),(c,1)

同時還要把rdd2進行拆分:

rdd2_1:(a,100)

rdd2_2:(b,90),(c,60)

第乙個疑慮:怎麼知道哪個key的資料量比較大會導致資料傾斜

可以採用抽樣,抽樣完之後做乙個wordcount,抽樣也有對應的運算元sample

看一下哪個key對應的資料比較多,就把這些key所對應的資料拆到乙個rdd中去

第二個疑慮:怎麼把乙個rdd拆成兩個rdd?

**怎麼寫,進行兩次filter,就可以得到兩個rdd

拆完之後接下來怎麼做?

分完之後要對這兩個rdd進行處理,key加上隨機字首,隨機!!字首

比如我加上的是ramdom(2)要麼是0要麼是1

這時候資料就變了:

rdd1_1:(a_0,1),(a,2),(a,3)

rdd1_2:(b,1),(c,1)

資料傾斜問題

一 資料傾斜的原因 核心原因是reduce段資料分布不均勻,導致少量reduce子任務未完成 二 解決方案 2.1調節引數hive.map.aggr true 在map端部分聚合,相當於combiner hive.groupby.skewindata true 資料傾斜的時候進行負載均衡,當選項設定...

大資料 「資料傾斜」的問題

解決資料傾斜的辦法,前輩已經寫得非常完整了,我這裡就直接搬磚吧 建議先看這個鏈結文章,非常好 下面是自己的總結 什麼是資料傾斜?見下圖 簡單來說資料傾斜就是資料的key 的分化嚴重不均,造成一部分資料很多,一部分資料很少的局面。舉個 word count 的入門例子 它的map 階段就是形成 aaa...

spark資料傾斜問題

資料傾斜 加更大記憶體 跟cpu硬體是效能優化的根本之道 一 資料傾斜帶來的致命性後果 1.oom 根本原因資料太多 一般oom都是由於資料傾斜所致,spark基於jvm之上的 2.速度非常慢 二 資料傾斜的基本特徵 1.任務分配不均勻 2.個別task處理過度大量的資料 shuffle過程中遇到同...