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