spark的行动算子aggregate函数

object Demo {

  def main(args: Array[String]): Unit = {
    val conf = new ConfigProperties("xxx") // 测试
    val sparkConf = new SparkConf().setAppName("app.name").setMaster("local") // 测试
    val sc = new SparkContext(sparkConf)
    val rdd = sc.parallelize(List(1,2,3,4,5,6,7,8), 2)
    /**
      * 第一分区: 1 2 3 4
      * 第二分区: 5 6 7 8
      * 首先SqpOp会在每个分区上执行 :初始值是 5
      * 第一个分区:
      * 5 1 结果6
      * 6 2 结果8
      * 8 3 结果11
      * 11 4 结果15
      * 第二分区:
      * 计算过程和第一个分区是一样的,结果是:31
      * 然后是全局CombOp处理合并每个分区的结果:初始值是 5
      * 5 + 15 + 31 = 51
      * 需要注意的是SeqOp和CombOp都要对初始值做处理
      */
    val value = rdd.aggregate(5)(seqOp(_,_),comb(_,_))
    println( "成功标识; " + value)
  }

  def seqOp(a:Int, b:Int):Int={
    println("SeqOp: " + a + "\t" + b )
    val result = a + b
    result
  }

  def comb(a: Int, b:Int):Int  ={
    println("Comb: " + a + "\t" + b)
    val result = a+b
    result
  }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值