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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。