Spark Graphx怎么求社交网络中的最大年纪追求者
Spark Graphx怎么求社交网络中的最大年纪追求者
本篇内容介绍了“Spark Graphx怎么求社交网络中的最大年纪追求者”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
Spark Graphx提供了mapReduceTriplets来对图进行聚合计算,但是1.2以后不再推荐使用,源代码如下:
@deprecated("useaggregateMessages","1.2.0")defmapReduceTriplets[A:ClassTag](mapFunc:EdgeTriplet[VD,ED]=>Iterator[(VertexId,A)],reduceFunc:(A,A)=>A,activeSetOpt:Option[(VertexRDD[_],EdgeDirection)]=None):VertexRDD[A]
*Aggregatesvaluesfromtheneighboringedgesandverticesofeachvertex.Theusersupplied*`mapFunc`functionisinvokedoneachedgeofthegraph,generating0ormore"messages"tobe*"sent"toeithervertexintheedge.The`reduceFunc`isthenusedtocombinetheoutputof*themapphasedestinedtoeachvertex.**Thisfunctionisdeprecatedin1.2.0becauseofSPARK-3936.*
推荐使用的是aggregateMessages:
defaggregateMessages[A:ClassTag](sendMsg:EdgeContext[VD,ED,A]=>Unit,mergeMsg:(A,A)=>A,tripletFields:TripletFields=TripletFields.All):VertexRDD[A]={aggregateMessagesWithActiveSet(sendMsg,mergeMsg,tripletFields,None)}
并举了一个简单的例子:
*vertex*{{{*valrawGraph:Graph[_,_]=Graph.textFile("twittergraph")*valinDeg:RDD[(VertexId,Int)]=*rawGraph.aggregateMessages[Int](ctx=>ctx.sendToDst(1),_+_)*}}}
可以看见能够进行消息传递和聚合操作。
案例实战:求社交网络中的年纪最大的追求者和追求者的平均年龄:
valoldestFollower:VertexRDD[(String,Int)]=userGraph.aggregateMessages[(String,Int)](triplet=>{triplet.sendToDst(triplet.srcAttr.name,triplet.srcAttr.age)},(a,b)=>if(a._2>b._2)aelseb)oldestFollower.collect.foreach(println(_))
averageAge:VertexRDD[]=userGraph.aggregateMessages[()](triplet=>{triplet.sendToDst(triplet.srcAttr.age)}(ab)=>((a._1+b._1)(a._2+b._2))).mapValues((idp)=>p._2/p._1)averageAge.collect().foreach((_))
很好很强大啊!
结果如下:
聚合操作
**********************************************************
找出年纪最大的追求者:
(4,(Bob,27))
(1,(David,42))
(6,(Charlie,65))
(2,(Charlie,65))
(3,(Ed,55))
**********************************************************
找出追求者的平均年纪:
(4,27.0)
(1,34.5)
(6,60.0)
(2,60.0)
(3,55.0)
**********************************************************
“Spark Graphx怎么求社交网络中的最大年纪追求者”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注恰卡编程网网站,小编将为大家输出更多高质量的实用文章!
推荐阅读
-
Hello Spark! | Spark,从入门到精通
-
Spark Streaming+Kafka的嵌入方式及应用
-
怎么让spark sql写mysql时支持update操作
怎么让spark sql写mysql时支持update操作这篇“怎...
-
Spark SQL怎么用
SparkSQL怎么用这篇文章主要介绍“SparkSQL怎么用...
-
Spark的相关问题有哪些
Spark的相关问题有哪些这篇文章主要介绍“Spark的相关问题有...
-
Spark SQL中怎么创建DataFrames
SparkSQL中怎么创建DataFrames本篇内容主要讲解“...
-
Redis怎么让Spark提速
Redis怎么让Spark提速本篇内容主要讲解“Redis怎么让S...
-
Spark 3.0怎么实现event logs滚动
Spark3.0怎么实现eventlogs滚动本篇内容介绍了“...
-
Spark是怎样工作的
Spark是怎样工作的本篇内容主要讲解“Spark是怎样工作的”,...
-
怎么成为大数据Spark高手
怎么成为大数据Spark高手这篇“怎么成为大数据Spark高手”文...