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']]
這裏:
-
parallelize(~)
創建一個有3個分區的RDD -
glom()
顯示每個分區的實際內容。
減少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']]
正如您所看到的,這會導致分區更加平衡。然而,混洗的缺點是,當數據量很大時,這是一個成本高昂的過程,因為數據必須從一個工作節點傳輸到另一個工作節點。
相關用法
- Python PySpark RDD collect方法用法及代碼示例
- Python PySpark RDD countByKey方法用法及代碼示例
- Python PySpark RDD count方法用法及代碼示例
- Python PySpark RDD collectAsMap方法用法及代碼示例
- Python PySpark RDD zip方法用法及代碼示例
- Python PySpark RDD repartition方法用法及代碼示例
- Python PySpark RDD partitionBy方法用法及代碼示例
- Python PySpark RDD reduceByKey方法用法及代碼示例
- Python PySpark RDD zipWithIndex方法用法及代碼示例
- Python PySpark RDD filter方法用法及代碼示例
- Python PySpark RDD first方法用法及代碼示例
- Python PySpark RDD keys方法用法及代碼示例
- Python PySpark RDD glom方法用法及代碼示例
- Python PySpark RDD getNumPartitions方法用法及代碼示例
- Python PySpark RDD map方法用法及代碼示例
- Python Django Response.json用法及代碼示例
- Python Django Repeat用法及代碼示例
- Python Django RandomUUID用法及代碼示例
- Python Django RelatedManager.set用法及代碼示例
- Python RLock acquire()用法及代碼示例
- Python Django RelatedManager.remove用法及代碼示例
- Python Random.Choices()用法及代碼示例
- Python Django RequestContext用法及代碼示例
- Python Django Reverse用法及代碼示例
- Python NumPy Random Generator uniform方法用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 PySpark RDD | coalesce method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。