repartition只是coalesce接口中shuffle為true的實現
不經過 shuffle,也就是coaleasce shuffle為false,是無法增加RDD的分區數的,比如你源RDD 100個分區,想要變成200個分區,只能使用repartition,也就是coaleasce shuffle為true。
如果上游為Partition個數為N,下游想要變成M個Partition
N > M , 比如N=100 M=60, 可以使用coaleasce shuffle為false。但是如果N遠大于M,比如N=100, M=1, 分區有一個激烈的變化時,此時如果用coalesce就只有一個task處理數據,資源利用不夠,Executor空跑,這時repartition是一個比較好的選擇,雖然有shuffle但是和只有1個Task處理任務比起來效率還是較高。 N < M , coaleasce shuffle為false 不能增加分區,只能用repartition
更多關于“大數據培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業需求,更科學更嚴謹,每年培養泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。