重新分配 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