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