PySpark实战:reduce操作

来自CloudWiki
跳转至: 导航搜索

介绍

reduce操作是一个变换算子

rdd.reduce(func)

它可以按照函数func的逻辑对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([1, 2, 3, 4, 5])
def f(x,y):
        #1 2
        #3 3
        #6 4
        #10 5
        print(x,y)
        return x + y

ret = rdd.reduce(f)
#15 = 1 + 2 + 3 + 4 + 5
print(ret)
def f2(x,y):
        #1 2
        #2 3
        #6 4
        #24 5
        print(x,y)
        return x * y
ret = rdd.reduce(f2)
#120 = 1 * 2 * 3 * 4 * 5
print(ret)
#ValueError: Can not reduce() empty RDD
#sc.parallelize([]).reduce(f)
##############################################
sc.stop()

输出

3 3
6 4
10 5
                                                                15
1 2
2 3
6 4
24 5
120