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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。