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