关于fold

1.在scala中,对集合的fold操作:

val l=List(1,2,3)
val res=l.fold(10)(_+_)

结果res为16  这里的10为整个集合的初始值,只使用了一次

2.spark中rdd

val a=sc.makeRDD(List(1,2,3))
val res=a.fold(10)(_+_)

结果res为46 这里的10为集合中每个元素的初始值,每个元素在调用函数_+_之前都被加了10 

注意区别

foldByKey同fold,但是前者反悔的是一个rdd,属于转换操作,后者返回值,属于行动操作

val b=sc.parallelize(List((1,2),(3,4),(3,6)))
val res=b.foldByKey(10)(_+_)
res foreach println

结果为(1,12) (3,30)

猜你喜欢

转载自blog.csdn.net/qq_32563713/article/details/78203722