Spark GraphX图计算核心算子实战【AggreagteMessage】

一.简介

  参考博客:https://www.cnblogs.com/yszd/p/10186556.html

二.代码实现

 1 package graphx
 2
 3 import org.apache.log4j.{Level, Logger}
 4 import org.apache.spark.graphx.util.GraphGenerators
 5 import org.apache.spark.sql.SparkSession
 6
 7 /**
 8   * Created by Administrator on 2019/10/22.
 9   */
10 object AggregateMessage {
11   /**
12     * 设置日志级别为WARN
13     */
14   Logger.getLogger("org").setLevel(Level.WARN)
15   def main(args: Array[String]) {
16     /**
17       * 创建spark入口
18       */
19     val spark = SparkSession.builder().appName("AggregateMessage").master("local[2]").getOrCreate()
20     val sc = spark.sparkContext
21
22     /**
23       * 随机生成图,默认出度为4,标准偏差为1.3,并行生成numVertices,partition默认为sc的默认partition
24       */
25     val graph = GraphGenerators.logNormalGraph(sc, numVertices = 100).mapVertices((id, _) => id.toDouble)
26     graph.vertices.take(5).foreach(println)
27     /**
28       * 将用户定义的sendMsg函数应用于图形中的每个边三元组,然后使用mergeMsg函数汇聚信息到目标顶点
29       */
30     val olderFollowers = graph.aggregateMessages[(Int, Double)](triplet =>{
31       if(triplet.srcAttr > triplet.dstAttr){
32         triplet.sendToDst(1, triplet.srcAttr)
33       }
34     },
35       (a, b) => (a._1 + b._1, a._2 + b._2)
36     )
37
38     /**
39       * 求平均值
40       */
41     val avgAgeOfOlderFollowers = olderFollowers.mapValues((id, value) => value match {case (count, totalAge) => totalAge / count})
42
43     /**
44       * 输出结果
45       */
46     avgAgeOfOlderFollowers.collect().take(5).foreach(println)
47   }
48 }

三.结果

  随机生成的顶点数据:

    

  聚合结果:

    

原文地址:https://www.cnblogs.com/yszd/p/11726921.html

时间: 2024-08-26 16:10:06

Spark GraphX图计算核心算子实战【AggreagteMessage】的相关文章

Spark Graphx图计算案例实战之aggregateMessages求社交网络中的最大年纪追求者和平均年纪!

Spark Graphx提供了mapReduceTriplets来对图进行聚合计算,但是1.2以后不再推荐使用,源代码如下: @deprecated("use aggregateMessages", "1.2.0") def mapReduceTriplets[A: ClassTag](     mapFunc: EdgeTriplet[VD, ED] => Iterator[(VertexId, A)],     reduceFunc: (A, A) =&g

spark graphx图计算

一.使用graph做好友推荐 import org.apache.spark.graphx.{Edge, Graph, VertexId} import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} //求共同好友 object CommendFriend { def main(args: Array[String]): Unit = { //创建入口 val conf: SparkConf

Spark GraphX图计算【代码实现,源码分析】

一.简介 参考:https://www.cnblogs.com/yszd/p/10186556.html 二.代码实现 1 package big.data.analyse.graphx 2 3 import org.apache.log4j.{Level, Logger} 4 import org.apache.spark.graphx._ 5 import org.apache.spark.rdd.RDD 6 import org.apache.spark.sql.SparkSession

spark graphX作图计算

一.使用graph做好友推荐 import org.apache.spark.graphx.{Edge, Graph, VertexId} import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} //求共同好友 object CommendFriend { def main(args: Array[String]): Unit = { //创建入口 val conf: SparkConf

Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈与熟练的掌握Scala语言【大数据Spark

Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈 大数据的概念与应用,正随着智能手机.平板电脑的快速流行而日渐普及,大数据中图的并行化处理一直是一个非常热门的话题.图计算正在被广泛地应用于社交网络.电子商务,地图等领域.对于图计算的两个核心问题:图存储模式和图计算模型,Spark GraphX给出了近乎完美的答案, 而Spark GraphX作为图计算领域的屠龙宝刀,对Pregel  API的支持更是让Spark GraphX如虎添翼.Spark GraphX可以轻而易举的完成基于度分布

Spark GraphX学习笔记

概述 GraphX是 Spark中用于图(如Web-Graphs and Social Networks)和图并行计算(如 PageRank and Collaborative Filtering)的API,可以认为是GraphLab(C++)和Pregel(C++)在Spark(Scala)上的重写及优化,跟其他分布式 图计算框架相比,GraphX最大的贡献是,在Spark之上提供一站式数据解决方案,可以方便且高效地完成图计算的一整套流水作业. Graphx是Spark生态中的非常重要的组件,

Spark GraphX 入门实例完整scala代码

由于天然符合互联网中很多场景的需求,图计算正受到越来越多的青睐.Spark GraphX 是作为 Spark 技术堆栈中的一员,担负起了 Spark 在图计算领域中的重任.网络上已经有很多图计算和 Spark GraphX 的概念介绍,此处就不再赘述. 本文将一篇很好的 Spark GraphX 入门文章中代码块整合为一个完整的可执行类,并加上必要注释以及执行结果,以方便有兴趣的朋友快速从 API 角度了解 Spark GraphX. 本文引用的代码块和多数文字描述均摘引自网文graph-ana

Spark GraphX实例(1)

Spark GraphX是一个分布式的图处理框架.社交网络中,用户与用户之间会存在错综复杂的联系,如微信.QQ.微博的用户之间的好友.关注等关系,构成了一张巨大的图,单机无法处理,只能使用分布式图处理框架处理,Spark GraphX就是一种分布式图处理框架. 1. POM文件 在项目的pom文件中加上Spark GraphX的包: <dependency> <groupId>org.apache.spark</groupId> <artifactId>sp

Spark入门实战系列--9.Spark图计算GraphX介绍及实例

[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.GraphX介绍 1.1 GraphX应用背景 Spark GraphX是一个分布式图处理框架,它是基于Spark平台提供对图计算和图挖掘简洁易用的而丰富的接口,极大的方便了对分布式图处理的需求. 众所周知·,社交网络中人与人之间有很多关系链,例如Twitter.Facebook.微博和微信等,这些都是大数据产生的地方都需要图计算,现在的图处理基本都是分布式的图处理,而并非单机处理.Spark