- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
GraphX最短路径之实践与心得前言:由于Spark是个新生事物,网上的资料较少,所以作为一个学习者,很高兴能与大家分享一下自己的学习心得,希望对大家有所帮助!有些东西自己也不是很理解,所以这只是一个探讨过程,大家如果有更好的见解和看法,希望大家也通过网络分享出来,这样也可以促进spark的发展,让我们都来为spark的成长做出自己一点小小的贡献吧。另外,再次说一下,Scala语言真的是一门不错的语言。实验内容本实验主要通过构建一张图,然后利用Pregel算法求出从某起始顶点到达其他顶点的最短路径。由于Spark自带的shortpath例子只有求出初始节点到达其他节点最短路径的值,本实验将在原来的基础上求出最短路径的路径图(经过哪些节点)。相关知识Pregel算法思想:Pregel将目标图类问题的运算模型归结为在图的拓扑节点(Vertex)上迭代执行特定的算法。每次迭代称为一个superstep,在Pregel中,数据模型的主要概念包括节点,边(Edge)和消息(Message)。在每个superstep步骤中,各个节点执行相同的用户定义函数来处理数据,更新自身的状态乃至更改整个图的拓扑结构(如增减节点,边等)。每个节点的边则用来链接相关的目标节点,通过发送消息给其它节点来传递数据。整个处理流程中,数据的接收和处理是以superstep为节拍来同步的,在一个superstep中各个节点所发送的消息,直到下一个superstep里才会被目标节点所接收和处理并触发状态变更。这种基于节拍的处理流程,很大程度上简化了数据同步的处理。?每个节点在当前superstep中处理完数据后,会投票决定自身是否停止处理,如果没有被消息再次触发,在以后的superstep中就不会调度该节点进行运算。当所有节点都停止后,整个迭代过程结束。这听起来是不是很抽象,下面就让我们通过代码来看看一个具体的例子:寻找最短路径。总体思路找出度为1的节点代码说明{varg = graph.mapVertices((vid, vdata) = vprog(vid, vdata, initialMsg)).cache()// compute the messagesvarmessages = g.mapReduceTriplets(sendMsg, mergeMsg)varresult : VertexRDD[Array[Edge[Double]]] = messagesvarresults : ArrayBuffer[(VertexId,(Array[Edge[Double]]))] = new ArrayBuffer[(VertexId,(Array[Edge[Double]]))]()varactiveMessages = messages.count()// Loopvari = 0result.collect.map(r = results.+=(r))while (activeMessages 0 i maxIterations) {// Receive the messages. Vertices that didnt get any messages do not appear in newVerts.valnewVerts = g.vertices.innerJoin(messages)(vprog).cache()// Update the graph with the new vertices.g = g.outerJoinVertices(newVerts) { (vid, old, newOpt) = newOpt.getOrElse(old) }g.cache()messages = g.mapReduceTriplets(sendMsg, mergeMsg, Some((newVerts, activeDirection))).cache()activeMessages = messages.count()if(activeMessages 0){// update new message to resultsmessages.collect.foreach{ ve =valvId = ve._1result = result.filter(v = v._1 != vId) results = results.filter(r = r._1 != vId)valedges = ve._2.array vararr1 : ArrayBuffer[Edge[Double]] = new ArrayBuffer[Edge[Double]]()for(es - edges ){varsrcId = es.srcIdvarr1
您可能关注的文档
最近下载
- 新纲要云南省实验教材小学三年级信息技术第一册教学计划汇编.pdf VIP
- 施罗德管道爬行机器人D100中文文版说明书.pdf VIP
- SHT3007-2014 石油化工储运系统罐区设计规范.pdf VIP
- 浅谈经编涤纶超柔短毛绒生产工艺.pdf VIP
- 教科版物理八年级上册第四章 在光的世界里 大单元整体学历案教案 教学设计附作业设计(基于新课标教学评一致性).docx VIP
- 感染性手术管理规范.pdf VIP
- 多摩川编码器说明书多摩川编码器说明书.pdf VIP
- 《运动生理学》第10章有氧、无氧工作能力1.ppt
- 《网络营销(第2版)》课件项目四 网上渠道:网站和网店营销.pptx VIP
- (1.2.5)--7.5-应急放油系统.ppt VIP
文档评论(0)