當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python PySpark RDD coalesce方法用法及代碼示例

PySpark RDD 的 coalesce(~) 方法返回一個減少分區數量的新 RDD。

參數

1. numPartitions | int

要減少的分區數量。

2. shuffle | boolean | optional

是否對數據進行打亂,使它們最終位於不同的分區中。默認情況下,shuffle=False

返回值

PySpark RDD (pyspark.rdd.RDD)。

例子

考慮以下具有 3 個分區的 RDD:

rdd = sc.parallelize(["A","B","C","D","A"], numSlices=3)
rdd.glom().collect()



[['A'], ['B', 'C'], ['D', 'A']]

這裏:

減少RDD的分區數量

將分區數量減少到 2:

new_rdd = rdd.coalesce(numPartitions=2)
new_rdd.glom().collect()



[['A'], ['B', 'C', 'D', 'A']]

我們可以看到第二個分區與第三個分區合並了。

使用shuffle對RDD進行平衡分區

我們還可以打亂數據,而不是合並分區來減少分區數量:

new_rdd = rdd.coalesce(numPartitions=2, shuffle=True)
new_rdd.glom().collect()



[['A', 'D', 'A'], ['B', 'C']]

正如您所看到的,這會導致分區更加平衡。然而,混洗的缺點是,當數據量很大時,這是一個成本高昂的過程,因為數據必須從一個工作節點傳輸到另一個工作節點。

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 PySpark RDD | coalesce method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。