Spark学习笔记:aggregateMessages
来源:互联网 发布:windows下编译pycaffe 编辑:程序博客网 时间:2024/06/14 21:19
应用情景:分析一个图时,需要分析与顶点相连接的每个顶点的信息,例如,需要统计汇总指向A点的每个顶点的信息:每个点的年龄
为了提高性能,主要的聚合操作从graph.mapReduceTriplets改为了新的graph.AggregateMessages。
1.生成一个100个点的graph,边的数目随机。点属性Double,表示该点的年龄,边属性Int
scala> import org.apache.spark.graphx.util.GraphGeneratorsscala> val graph: Graph[Double, Int] = GraphGenerators.logNormalGraph(sc, numVertices = 100).mapVertices( (id, _) => id.toDouble )
2.生成点集olderFollowers: VertexRDD[(Int, Double)],Int为年龄大于该点的点的数目,Double为这些点的年龄的累加和
scala> val olderFollowers: VertexRDD[(Int, Double)] = graph.aggregateMessages[(Int, Double)]( triplet => { if (triplet.srcAttr > triplet.dstAttr) { triplet.sendToDst(1, triplet.srcAttr) } }, (a, b) => (a._1 + b._1, a._2 + b._2))
上述 ( 1 , triple.srcAttr ) 为发送给dst的消息
triplet => … 可视为map过程
(a,b) => … 可视为reduce过程
3.求出平均年龄
scala> val avgAgeOfOlderFollowers: VertexRDD[Double] =olderFollowers.mapValues( (id, value) => value match { case (count, totalAge) => totalAge / count } )scala> avgAgeOfOlderFollowers.collect.foreach(println(_))
0 0
- Spark学习笔记:aggregateMessages
- Spark组件之GraphX学习5--随机图生成和消息发送aggregateMessages以及mapreduce操作(含源码分析)
- Spark Graphx 构建graph和aggregateMessages聚合消息
- spark学习笔记:Spark Streaming
- Spark学习笔记:初识Spark
- Spark学习笔记--Spark基础知识
- spark学习笔记:初识spark
- Spark 学习笔记
- Spark学习笔记
- Spark学习笔记
- Spark 学习笔记
- spark源码学习笔记
- spark学习笔记二
- Spark学习笔记(一)
- Spark学习笔记
- Spark学习笔记0
- Spark学习笔记
- spark学习笔记
- 最大公约数与最小公倍数
- 以Post方式发送数据采用WebClient
- CSS 中单位px和em,rem的区别
- Java反射机制深入研究
- @JoinColumn 详解
- Spark学习笔记:aggregateMessages
- Delphi中的数组类型
- 在使用stl中的ifstream出错时如何快速排错?
- 15.4.2:可变参数与泛型化方法
- lintcode ---- 尾部的零
- rsync
- Android项目重构之路:架构篇
- CentOS7 mini的安装和静态ip设置
- 合并有序数组