最近因為手抖,在Spark中給自己挖了一個數(shù)據(jù)傾斜的坑。為了解決這個問題,順便研究了下Spark分區(qū)器的原理,趁著周末加班總結(jié)一下~

先說說數(shù)據(jù)傾斜

數(shù)據(jù)傾斜是指Spark中的RDD在計算的時候,每個RDD內(nèi)部的分區(qū)包含的數(shù)據(jù)不平均。比如一共有5個分區(qū),其中一個占有了90%的數(shù)據(jù),這就導(dǎo)致本來5個分區(qū)可以5個人一起并行干活,結(jié)果四個人不怎么干活,工作全都壓到一個人身上了。遇到這種問題,網(wǎng)上有很多的解決辦法:

比如這篇寫的就不錯:http://www.cnblogs.com/jasongj/p/6508150.html

但是如果是底層數(shù)據(jù)的問題,無論怎么優(yōu)化,還是無法解決數(shù)據(jù)傾斜的。

比如你想要對某個rdd做groupby,然后做join操作,如果分組的key就是分布不均勻的,那么真樣都是無法優(yōu)化的。因為一旦這個key被切分,就無法完整的做join了,如果不對這個key切分,必然會造成對應(yīng)的分區(qū)數(shù)據(jù)傾斜。

不過,了解數(shù)據(jù)為什么會傾斜還是很重要的,繼續(xù)往下看吧!

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式