当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PySpark RDD coalesce方法用法及代码示例


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']]

这里:

减少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']]

正如您所看到的,这会导致分区更加平衡。然而,混洗的缺点是,当数据量很大时,这是一个成本高昂的过程,因为数据必须从一个工作节点传输到另一个工作节点。

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 PySpark RDD | coalesce method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。