Learning Spark 笔记(二) -- aggregate初值初探
来源:互联网 发布:淘宝怎么申请ifashion 编辑:程序博客网 时间:2024/06/06 10:56
3 . fold和aggregate都需要初值,且每个初值应用到每个分区。例子如下:
val input = sc.parallelize(List(1,2,3,4,5,6),3) val result = input.aggregate((0, 0))( (acc, value) => (acc._1 + value, acc._2 + 1), (acc1, acc2) => (acc1._1 + acc2._1, acc1._2 + acc2._2))
最终的结果是21/6;
但是如果将初值设为(0,1),那么最终的结果将是21/10,分母是10的原因是产生了4个累加器。将上面改变为
val input = sc.parallelize(List(1,2,3,4,5,6),5) val result = input.aggregate((0, 1))( (acc, value) => { println("seq: "+acc,value) (acc._1 + value, acc._2 + 1)}, (acc1, acc2) => { println("com: "+acc1+" "+acc2) (acc1._1 + acc2._1, acc1._2 + acc2._2) })
输出结果如下:
(seq: (0,1),5)(seq: (0,1),3)(seq: (0,1),1)(seq: (3,2),4)(seq: (5,2),6)(seq: (1,2),2)com: (0,1) (7,3)com: (7,4) (11,3)com: (18,7) (3,3)result: (Int, Int) = (21,10)
由上面的结果可以看到一共有4个(0,1)输出,其中有3个是第一个函数在各个分区中产生的,最后1个则是第2个函数聚集的时候产生的,在此猜想:只要是产生一个累加器或者新的分区,最开始设置的初值就会产生影响。为了验证,将分区数设为5,则预想会有6个累加器产生,最后的结果应该是(21,12)。经过实验,最后的结果也正是如此。
0 0
- Learning Spark 笔记(二) -- aggregate初值初探
- Deep Learning 初探(二)
- Learning Spark笔记7-聚合
- Learning Spark笔记10-PageRank
- Learning Spark笔记12-累加器
- Spark函数讲解:aggregate
- spark函数讲解:aggregate
- spark aggregate函数详解
- spark算子-aggregate
- Learning Spark笔记1-Spark介绍
- Learning Spark笔记3-传递函数给Spark
- Learning Spark笔记16-调试Spark
- Learning Spark笔记17-Spark SQL
- Learning Spark (Python版) 学习笔记(二)----键值对、数据读取与保存、共享特性
- Learning Spark (Python版) 学习笔记(二)----键值对、数据读取与保存、共享特性
- 深入理解 spark api --- Aggregate
- Spark RDD的aggregate算子
- spark rdd aggregate (python语言)
- C++sort函数的用法
- session流程
- 最短路SPFA——Big Christmas Tree ( POJ 3013 )
- 动态规划
- 搭个外网可访问的TOMCAT、SVN
- Learning Spark 笔记(二) -- aggregate初值初探
- 动态加载未安装的apk文件里面的类
- Android4.2使用TextClock出现"HH:00"的问题的解决方案
- Crime and Punishment
- 怎样在知网检索SCI/EI期刊
- Docker网络优化方案,你认为哪种将引爆未来?
- OpenCV 系列 --- 形态学操作(膨胀、腐蚀)
- 进程之间的通信
- QT5 creator 调试器未配置