PySpark RDD 的 partitionBy(~)
方法將一對 RDD 重新分區為所需數量的分區。
參數
1. numPartitions
| int
生成的 RDD 的所需分區數。
2. partitionFunc
| function
| optional
分區函數 - 輸入是鍵,返回值必須是哈希值。默認情況下,將使用哈希分區器。
返回值
PySpark RDD (pyspark.rdd.RDD
)。
例子
重新分區一對 RDD
考慮以下 RDD:
# Create a RDD with 3 partitions
rdd = sc.parallelize([("A",1),("B",1),("C",1),("A",1)], numSlices=3)
rdd.collect()
[('A', 1), ('B', 1), ('C', 1), ('A', 1)]
要查看此 RDD 如何分區,請使用 glom()
方法:
rdd.glom().collect()
[[('A', 1)], [('B', 1)], [('C', 1), ('A', 1)]]
我們確實可以看到有3個分區:
-
分區一:
('A',1)
和('B',1)
-
分區二:
('C',1)
-
分區三:
('A',1)
重新分區為 2 個分區:
new_rdd = rdd.partitionBy(numPartitions=2)
new_rdd.collect()
[('C', 1), ('A', 1), ('B', 1), ('A', 1)]
要查看新分區的內容:
new_rdd.glom().collect()
[[('C', 1)], [('A', 1), ('B', 1), ('A', 1)]]
我們確實可以看到有2個分區:
-
分區一:
('C',1)
-
分區二:
('A',1)
、('B',1)
、('A', 1)
請注意帶有 A
鍵的元組如何最終位於同一分區中。這是肯定會發生的,因為哈希分區器將根據元組鍵執行分桶。
相關用法
- Python PySpark RDD zip方法用法及代碼示例
- Python PySpark RDD collect方法用法及代碼示例
- Python PySpark RDD repartition方法用法及代碼示例
- Python PySpark RDD countByKey方法用法及代碼示例
- Python PySpark RDD reduceByKey方法用法及代碼示例
- 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 | partitionBy method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。