2017-03-05 1 views
0

Was ich tun möchte ist, den Graph, den ich erstellt habe, an alle Scheitelpunkte zu übertragen, und dann kann jeder Scheitel seine eigene Berechnung auf diesem Graph durchführen, um den kürzesten Pfad in Bezug auf sich selbst als den Scheitelpunkt der Quelle zu berechnen? Der folgende Code immer, wenn ich versuche, das Diagramm in der Methode compute Zugriff gibt mir: java.lang.NullPointerExceptionÜbertragen einer Grafik in Pregel Api in Graphx?

val result=graph.pregel(graph,Int.MaxValue,EdgeDirection.Out)((id, value, msg) => compute(msg,id),triplet => Iterator.empty,(a, b) => a) 
+1

können Sie ein reproduzierbares Beispiel mit Daten und erwarteter Ausgabe anzeigen? – mtoto

Antwort

0

Sofern Sie iterative Einschränkungen haben, oder wollen den kürzesten Weg zu einem (zeitlich) ändernden Knoten zu berechnen, könnte es sein, viel einfacher, dies mit Hilfe von org.apache.spark.graphx.lib.ShortestPaths [1] zu berechnen, und dies auf jedem Ihrer Vertices aufrufen.

In beiden Fällen wird der Speicherverbrauch für nur mittelgroße Graphen unverhältnismäßig groß. Wenn Sie keinen wirklich großen Cluster oder nur einen kleinen Graphen haben, ist dies höchstwahrscheinlich eine unüberwindbare Aufgabe.

Die Bereitstellung weiterer Informationen zu Ihrer Einstellung könnte die Antworten möglicherweise verbessern.

+0

Was ich genau machen möchte ist, wenn wir Algorithmen wie Betweenness Centrality oder alle paar kürzesten Pfade oder irgendeinen Algorithmus, der eine Berechnung an jedem Knoten des Graphen benötigt, dann müssen wir definitiv haben (für jeden Knoten v einige Berechnungen) . Ich möchte dies für eine Schleife parallel auf nur einer Grafik tun – okm02

+0

Aber dann würden Sie in der Regel die Optimierung der Funken verlieren, da ihre Effizienz in der parallelen Verteilung von Aufgaben liegt. Wenn Sie dies nur auf einem Graphen durchführen wollen (was übrigens nicht möglich ist, da shortestPaths einen anderen Graphen mit den Pfadlängen sowieso als Eckpunktattribute zurückgibt). Das Problem ist, dass Sie anscheinend vergessen, dass sowohl die Zentralität als auch der pageRank iterative Lösungen und keine unterschiedlichen Graphen für jeden Knoten haben – dennlinger

Verwandte Themen