GraphX ​​- Как найти накопленное расстояние от данного узла до всех остальных? - PullRequest
0 голосов
/ 30 июня 2019

Я использую GraphX ​​для моделирования шоссе. Каждая вершина является точкой дороги, и каждое ребро, соединяющее две вершины, содержит расстояние между ними. Я хотел бы создать новый граф, в котором суммарное расстояние от заданной начальной вершины является свойством каждой вершины.

Я сделал это с помощью рекурсивной функции с использованием graph.triplets, но мне интересно, есть ли лучший способ сделать это с помощью API GraphX.

График похож на это

val vertici : RDD[(VertexId, (Double, Double))] = 
sc.parallelize(Array((1L, (1.1,1.1)), (2L, (2.1,2.1)), (3L, (3.1,3.1)),
 (4L, (4.1,4.1)), (5L, (5.1,5.1)), (6L, (6.1,6.1))))

val archi : RDD[Edge[Double]] =
sc.parallelize(Array(Edge(1L, 2L, 0.5), Edge(2L, 3L, 0.5), Edge(3L, 4L, 0.5),
Edge(3L, 5L, 0.5), Edge(5L, 6L, 0.5)))

Например, если у меня есть 6L в качестве начальной точки, результат должен быть таким:

(6L, 0.0)
(5L, 0.5)
(3L, 1.0)
(2L, 1.5)
(1L, 2.0)
(4L, 1.5)

Спасибо за помощь

...