重新分配 RDD

有時我們想要重新分割槽 RDD,例如因為它來自我們不建立的檔案,並且從建立者定義的分割槽數量不是我們想要的。

實現這一目標的兩個最著名的功能是:

repartition(numPartitions)

和:

coalesce(numPartitions, shuffle=False)

根據經驗,當你想要在更多分割槽中重新分割槽 RDD 時使用第一個,而在較少數量的分割槽中使用第二個來減少 RDD。 Spark - repartition()vs coalesce()

例如:

data = sc.textFile(file)
data = data.coalesce(100) // requested number of #partitions

將這個 RDD 的分割槽數量稱為資料減少到 100,因為這個 RDD 在被 textFile() 讀取時有超過 100 個分割槽。

並且以類似的方式,如果你想要為 RDD 提供超過當前分割槽數量,你可以這樣做(假設你的 RDD 分佈在 200 個分割槽中):

data = sc.textFile(file)
data = data.repartition(300) // requested number of #partitions