小编Jus*_*one的帖子

Apache Spark 计算最短路径

我正在尝试根据 Apache Spark 的权重计算大型网络中从给定源到给定目标的最短路径。由于我所有其他代码都是用 python 编写的,所以我不想更改。这应该是有可能的,不是吗?由于我对 Spark 很陌生,也许我不知道如何解决这个问题。

也许有人可以帮助我?提前致谢!

到目前为止我尝试过的:

  • 创建顶点和边列表
  • 使用 GraphFrame() 创建图表
  • 取消 GraphFrames 最短路径方法来计算最短路径

到目前为止还不错(不太好)。GraphFrames 最短路径方法的问题在于,它计算从每个节点到给定节点集的最短路径,这适用于小型图,但对于大型网络来说需要很长时间。因为考虑了所有节点,所以进行了大量“不必要”的计算。我只需要获得从一个节点到另一个节点的最短路径。

我在互联网上搜索,发现 Spark graphx 库有我正在寻找的功能,但遗憾的是它仅适用于 Scala...

也许我可以使用 rdds 来计算基于权重的最短路径?或者是否有我无法找到的 pyspark 的最短路径实现?不敢相信 pyspark 没有实现最短路径算法。

    vertices_rdd = vertices_rdd3.zipWithIndex()
    # vertices_rdd.take(3): 
    # [((552897.813699282, 4164322.19502139), 0), ((583743.487097408, 4158379.86761575), 1), ((585964.589845657, 4158443.96863072), 2)]

    edges_rdd = edges_rdd1.flatMap(lambda x: x)
    # edges_rdd.take(3): 
    # [(62734, 107857, 102.19468251940246, '8'), (107857, 62734, 102.19468251940246, '8'), (79903, 191109, 21.81675476329727, '13')]

    spark = SparkSession(sc)

    vertices_df = vertices_rdd.toDF(["coordinate","id"])
    edges_df = edges_rdd.toDF(["src", "dst", "distance", "streetclass"])

    vertices_df.show()
    #+--------------------+---+ …
Run Code Online (Sandbox Code Playgroud)

graph shortest-path apache-spark pyspark graphframes

5
推荐指数
0
解决办法
1873
查看次数

如何访问图形工具边缘?为什么图形工具边没有 id?

我正在尝试访问图形工具边缘。示例:假设如下图。

from graph_tool.all import *

g = Graph()

eprop = g.new_edge_property("int")
g.edge_properties["distance"] = eprop

v0 = g.add_vertex()
v1 = g.add_vertex()
v2 = g.add_vertex()
v3 = g.add_vertex()
v4 = g.add_vertex()

e0 = g.add_edge(v0, v1) 
g.ep.distance[e0] = 1
e1 = g.add_edge(v1, v2)
g.ep.distance[e1] = 1
e2 = g.add_edge(v2, v3)
g.ep.distance[e2] = 1
e3 = g.add_edge(v3, v4)
g.ep.distance[e3] = 1
e4 = g.add_edge(v0, v4)
g.ep.distance[e4] = 1
e5 = g.add_edge(v0, v4)
g.ep.distance[e5] = 2

graph_draw(g, vertex_text=g.vertex_index, vertex_font_size=18, output_size=(200, 200), output="Test.png")
Run Code Online (Sandbox Code Playgroud)

图像

从顶点 0 …

python graph python-3.x graph-tool

3
推荐指数
1
解决办法
3302
查看次数