首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Graphx中广播Pregel Api中的图形?

在Graphx中广播Pregel Api中的图形?
EN

Stack Overflow用户
提问于 2017-03-06 05:12:38
回答 2查看 308关注 0票数 1

我想要做的是将我创建的图传播给所有的顶点,然后每个顶点都可以在这个图上进行自己的计算,以计算相对于自身作为源顶点的最短路径?当我尝试访问compute方法中的图形时,下面的代码总是提供给我:java.lang.NullPointerException

代码语言:javascript
复制
val result=graph.pregel(graph,Int.MaxValue,EdgeDirection.Out)((id, value, msg) => compute(msg,id),triplet => Iterator.empty,(a, b) => a)
EN

回答 2

Stack Overflow用户

发布于 2017-03-15 19:07:30

除非您有迭代限制,或者要计算到(临时)更改节点的最短路径,否则借助org.apache.spark.graphx.lib.ShortestPaths [1]并在每个顶点上调用它可能会更容易计算。

无论哪种方式,仅对于中等大小的图形,此操作的内存消耗将不成比例。除非你有一个非常大的集群,或者只有一个很小的图,否则这很可能是一项无法克服的任务。

提供有关您的设置的更多信息可能会改善所给出的答案。

票数 2
EN

Stack Overflow用户

发布于 2020-04-19 22:44:27

如果有人正在尝试做同样的事情,这里是这个问题的答案。

首先,因为GraphX使用RDD来存储图的顶点和边,所以不可能以这种方式广播一个图,因为我们不能访问另一个RDD中的RDD。这就是为什么你会得到一个java.lang.NullPointerException

其次,像这样广播图表不是一个好主意,你可能应该考虑用分布式的方式来计算每个顶点的最短路径。例如,您可以从每个顶点触发最短路径计算,并使用lengthsource标记消息,以区分不同的路径,而不是只有一个源顶点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42614085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档