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


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


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 键的元组如何最终位于同一分区中。这是肯定会发生的,因为哈希分区器将根据元组键执行分桶。

相关用法


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