Spark Graphx怎么求社交网络中的最大年纪追求者

Spark Graphx怎么求社交网络中的最大年纪追求者

本篇内容介绍了“Spark Graphx怎么求社交网络中的最大年纪追求者”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Spark Graphx提供了mapReduceTriplets来对图进行聚合计算,但是1.2以后不再推荐使用,源代码如下:

Spark Graphx怎么求社交网络中的最大年纪追求者

@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怎么求社交网络中的最大年纪追求者”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注恰卡编程网网站,小编将为大家输出更多高质量的实用文章!

发布于 2022-01-14 22:30:52
收藏
分享
海报
0 条评论
39
上一篇:ERP信息化管理下的生产车间管理效果是什么 下一篇:在PL/SQL中调用Oracle ERP提交请求集的示例分析
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码