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

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

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

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

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

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

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

延伸閱讀

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