當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。