aggregate函数将每个分区里面的元素进行聚合,然后用combine函数将每个分区的结果和初始值(zeroValue)进行combine操作。这个函数最终返回的类型不需要和RDD中元素类型一致。

def aggregate[U: ClassTag](zeroValue: U)(seqOp: (U, T) => U, combOp: (U, U) => U): U
 
注意:
1.每个分区开始聚合第一个元素都是zeroValue
2.分区之间的聚合,zeroValue也参与运算
 
scala> val rdd = sc.parallelize(List(18,28,7,66,-19,100,29,55,4),3)
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[2] at parallelize at <console>:24 //先对分区内的元素进行聚合;
scala> def InnerCom(a:Int, b:Int) : Int = {
| println("InnerCom: " + a + " : " + b)
| math.min(a,b)
| }
InnerCom: (a: Int, b: Int)Int //对聚合后的分区之间进行聚合
scala> def partitionCom(a:Int, b:Int): Int = {
| println("partitionCom: " + a + " : " + b)
| a + b
| }
partitionCom: (a: Int, b: Int)Int //3个分区,min(分区1)=7,min(分区2)=-19,min(分区1)=4
//50 + 7 + -19 + 4 = 42
scala> rdd.aggregate(50)(InnerCom,partitionCom)
InnerCom: 50 : 18
InnerCom: 18 : 28
InnerCom: 18 : 7
partitionCom: 50 : 7
InnerCom: 50 : 66
InnerCom: 50 : -19
InnerCom: -19 : 100
partitionCom: 57 : -19
InnerCom: 50 : 29
InnerCom: 29 : 55
InnerCom: 29 : 4
partitionCom: 38 : 4
res5: Int = 42

最新文章

  1. 选中没有选中的复选框,匹配含有某个字符串的正则,json取值的两种方法,把变量定义在外面跟里面的区别
  2. IIS 发布mvc 403.14
  3. SU Demos-07NMO
  4. Codeforces Round #246 (Div. 2) A. Choosing Teams
  5. BI之SSAS完整实战教程4 -- 部署至SSAS进行简单分析
  6. BZOJ4299 : Codechef FRBSUM
  7. TP复习
  8. 普通PC通过USB转485串口 ModBus-RTU通信协议控制伺服电机
  9. 部署Java和Tomcat
  10. disconf安装问题
  11. Myeclipse和idea对比
  12. 前端-JavaScript1-8——JavaScript之作业练习
  13. Python实例---CRM管理系统分析180331
  14. 八皇后II
  15. angular.foEach
  16. 170607、SQL Select语句完整的执行顺序
  17. M.2接口NVMe协议的固态硬盘读写速度是SATA接口的两倍
  18. 每周荐书:Kotlin、分布式、Keras(评论送书)
  19. 基于Maven的Spring + Spring MVC + Mybatis的环境搭建
  20. js计算百分比

热门文章

  1. 【MyBatis深入剖析】应用分析与最佳实践(下)
  2. Scrapy中的crawlspider
  3. php token验证范例
  4. centos7.4安装docker
  5. Oracle把表记录恢复到指定时间节点
  6. 【三剑客】sed命令
  7. vue-cli创建的webpack工程中引用ExtractTextPlugin导致css背景图设置无效的解决方法
  8. Linux下文件完整性监控工具Tripwire详解
  9. 图论--SCC强连通缩点--Tarjan
  10. Python第三方库之Numpy库