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


Python PySpark RDD reduceByKey方法用法及代碼示例


PySpark RDD的reduceByKey(~)方法通過key聚合RDD數據,並執行歸約操作。歸約運算就是將多個值歸約為單個值的運算(例如求和、乘法)。

參數

1. func | function

要應用的縮減函數。

2. numPartitions | int | optional

默認情況下,分區數量將等於父 RDD 的分區數量。如果父 RDD 沒有設置分區計數,則將使用 PySpark 配置中的並行級別。

3. partitionFunc | function | optional

要使用的分區器 - 輸入是鍵,返回值必須是哈希值。默認情況下,將使用哈希分區器。

返回值

PySpark RDD (pyspark.rdd.PipelinedRDD)。

例子

考慮以下 Pair RDD:

rdd = sc.parallelize([("A",1),("B",1),("C",1),("A",1)], numSlices=3)
rdd.collect()



[('A', 1), ('B', 1), ('C', 1), ('A', 1)]

這裏, parallelize(~) 方法創建了一個具有3個分區的RDD。

按對 RDD 中的鍵進行分組並執行歸約操作

按鍵分組並對每個分組鍵的值進行求和:

rdd.reduceByKey(lambda a, b: a+b).collect()



[('B', 1), ('C', 1), ('A', 2)]

設置對RDD中按鍵減少後的分區數

默認情況下,生成的 RDD 的分區數將等於父 RDD 的分區數:

# Create a RDD using 3 partitions
rdd = sc.parallelize([("A",1),("B",1),("C",1),("A",1),("D",1)], numSlices=3)
new_rdd = rdd.reduceByKey(lambda a, b: a+b)
new_rdd.getNumPartitions()



3

這裏, rddnew_rdd 的父 RDD 。

我們可以通過設置 numPartitions 參數來設置生成的 RDD 的分區數量:

rdd = sc.parallelize([("A",1),("B",1),("C",1),("A",1),("D",1)], numSlices=3)
new_rdd = rdd.reduceByKey(lambda a, b: a+b, numPartitions=2)
new_rdd.getNumPartitions()



2

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 PySpark RDD | reduceByKey method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。