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


1.定义

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

2.示例

  object aggregateTest 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.aggregate(0)(_ - _, _ - _)

    println(result)

    sc.stop()
  }