PySpark实战:reduceByKey操作

来自CloudWiki
跳转至: 导航搜索

介绍

reduceByKey操作是一个变换算子

它可以按照函数func的逻辑对元素格式为KV的RDD中的数据进行运算,以减少元素个数。

代码


import findspark
findspark.init()
##############################################
from pyspark.sql import SparkSession
spark = SparkSession.builder \
        .master("local[1]") \
        .appName("RDD Demo") \
        .getOrCreate();
sc = spark.sparkContext
#############################################
rdd = sc.parallelize([("a", 1), ("b", 1), ("a", 2),("b", 3)])
def f(x,y):
        #1 2
        #1 3
        print(x,y)
        return x + y
#rdd2 = rdd.reduceByKey(lambda x,y:x+y)
rdd2 = rdd.reduceByKey(f)
#[('a', 3), ('b', 4)]
print(rdd2.collect())
##############################################
sc.stop()

输出

[('a', 3), ('b', 4)]