第五章_Spark核心编程_Rdd_行动算子_fold


1.定义

  /*
* 1.定义
*     def fold(zeroValue: T)(op: (T, T) => T): T
*     op : 分区内、分区间聚合函数
* 2.功能
*     分区的数据通过初始值和分区内的数据进行聚合,然后再和初始值进行分区间的数据聚合
* 3.执行流程
*     1. 分区内对元素聚合
*         op(zeroValue,e)
*     2. 拉取分区聚合的结果,在Driver聚合
*         op(zeroValue,par_e)
*

2.示例

  object foldTest extends App {

    val sparkconf: SparkConf = new SparkConf().setMaster("local").setAppName("distinctTest")

    val sc: SparkContext = new SparkContext(sparkconf)

    private val rdd: RDD[Int] = sc.makeRDD(List(8, 2, 4, 2), 2)

    private val result: Int = rdd.fold(0)(_ - _)

    println(result)

    sc.stop()
  }