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
這裏, rdd
是 new_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
相關用法
- Python PySpark RDD repartition方法用法及代碼示例
- Python PySpark RDD zip方法用法及代碼示例
- Python PySpark RDD collect方法用法及代碼示例
- Python PySpark RDD countByKey方法用法及代碼示例
- Python PySpark RDD partitionBy方法用法及代碼示例
- Python PySpark RDD coalesce方法用法及代碼示例
- Python PySpark RDD zipWithIndex方法用法及代碼示例
- Python PySpark RDD count方法用法及代碼示例
- Python PySpark RDD filter方法用法及代碼示例
- Python PySpark RDD collectAsMap方法用法及代碼示例
- 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 | reduceByKey method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。