PySpark RDD 的repartition(~)
方法將 RDD 拆分為指定數量的分區。
注意
當我們第一次創建 RDD 時,它們已經在底層進行了分區,這意味著所有 RDD 都已經分區了。此方法稱為 repartition(~)
(重點是 re
),因為我們正在更改現有分區。
參數
1. numPartitions
| int
用於拆分 RDD 的分區數。
返回值
PySpark RDD (pyspark.rdd.RDD
)。
例子
將 RDD 重新分區為一定數量的分區
考慮以下 RDD:
rdd = sc.parallelize(["A","B","C","A","A","B"], numSlices=3)
rdd.collect()
['A', 'B', 'C', 'A', 'A', 'B']
在這裏,我們使用 parallelize(~)
方法創建一個具有3個分區的RDD。
我們可以使用 glom()
方法來查看分區的實際內容:
rdd.glom().collect()
[['A', 'B'], ['C', 'A'], ['A', 'B']]
將 RDD 重新分區為 2 個分區:
new_rdd = rdd.repartition(2)
new_rdd.glom().collect()
[['A', 'B', 'A', 'B'], ['C', 'A']]
請注意,即使我們重新分區 RDD:
-
相同的值不一定會出現在同一個分區中(
'A'
可以在兩個分區中找到) -
每個分區中的元素數量也可能不平衡 - 這裏我們第一個分區中有 4 個元素,而第二個分區中隻有 2 個元素。
警告
repartition(~)
方法涉及混洗,即使減少分區數量也是如此。為了避免減少分區數量時出現混洗,請改用 RDD 的 coalesce(~)
方法。
相關用法
- Python PySpark RDD reduceByKey方法用法及代碼示例
- Python PySpark RDD zip方法用法及代碼示例
- Python PySpark RDD collect方法用法及代碼示例
- Python PySpark RDD countByKey方法用法及代碼示例
- Python PySpark RDD partitionBy方法用法及代碼示例
- Python PySpark RDD coalesce方法用法及代碼示例
- Python PySpark RDD zipWithIndex方法用法及代碼示例
- Python PySpark RDD count方法用法及代碼示例
- Python PySpark RDD filter方法用法及代碼示例
- Python PySpark RDD collectAsMap方法用法及代碼示例
- 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 | repartition method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。