PySpark实战:fold操作

来自CloudWiki
跳转至: 导航搜索

介绍

fold操作是一个变换算子,

它的作用是对RDD每个元素按照func定义的逻辑进行处理

func包含两个参数a,b,其中a的初始值为value,后续代表累计值,b代表当前元素值

代码


import findspark
findspark.init()
##############################################
from pyspark.sql import SparkSession
spark = SparkSession.builder \
        .master("local[1]") \
        .appName("RDD Demo") \
        .getOrCreate();
sc = spark.sparkContext
#############################################
ret=sc.parallelize([1, 2, 3, 4, 5]).fold(0, lambda x,y:x+y)
#15
print(ret)
ret=sc.parallelize([1, 2, 3, 4, 5]).fold(1, lambda x,y:x*y)
#120
print(ret)
##############################################
sc.stop()

func包含两个参数a,b,其中a的初始值为value,后续代表累计值,b代表当前元素值

当遍历元素1时,此时x=0,y=1,返回x+y=1;

当遍历元素2时,此时x=1,y=2,返回x+y=3;

当遍历元素3时,此时x=3,y=3,返回x+y=6

输出

15

120