【问题标题】:Spark GraphX get shortest path between all verticesSpark GraphX 获取所有顶点之间的最短路径
【发布时间】:2017-04-04 16:39:20
【问题描述】:

在 Spark GraphX 中,ShortestPaths 不采用 RDD 作为输入,而是采用 Seq

这意味着以下内容不起作用:

val paths = ShortestPaths.run(graph,graph.vertices)

但是我的图表太大而无法调用collect,我不想通过仅将其强制到驱动程序上来减慢速度。是否可以使用mapaggregateMessages 解决此问题?还是我必须自己重写寻路代码?

【问题讨论】:

  • @Michal 我不确定你的意思? GraphX 不能与 Dataframe 一起使用。
  • 过去有一种方法可以简单地通过toSchemaRDD() 转换RDD,但它已被弃用,文档说toDF() 是现在使用的函数。
  • @Michal 我不想要数据帧。 ShortestPaths 期望 Seq 不是 DF。
  • 这是有意的,因为Spark 的最短路径算法的实现是单一目标版本,您应该只提供您感兴趣的目标顶点。

标签: apache-spark spark-graphx


【解决方案1】:

我不得不承认你的目标对我来说没有意义。您是否正在寻找一张地图,使用简单的语言,顶点 -> 列表(其他顶点,到其他顶点的最短路径)?对我来说,最短路径问题总是涉及相对较小的顶点子集,所以Seq 对我来说很有意义。

无论如何,我认为您将需要使用 Pregel object 自己使用由 Google 的原始 Pregel paper 和 Facebook 的 Giraph 开创的批量同步并行方法来计算最短路径。 Here 是一篇关于在 GraphX 中使用 BSP 和 Pregel 进行最短路径的帖子。

【讨论】:

  • 我正在使用 De Bruijn 图进行从头组装。我们生成所有顶点之间的所有路径,然后将路径保持在一定长度以上。
  • 我尊重您卓越的专业知识。除了我描述的基于 BSP 的方法之外,我不知道有任何其他方法。我希望其他人提出更简单的想法。
猜你喜欢
  • 1970-01-01
  • 2016-10-30
  • 2016-03-26
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 2017-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多