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