Ich muss die Graphx Pregel API verwenden, um Berechnungen auf einem ungerichteten Graphen auszuführen. Würde es die Direktionalität des Graphen ignorieren, wenn ich activeDirection = EdgeDirection.Either?Klarstellung Die activeDirection in Graphx pregel api für die Berechnung auf einem ungerichteten Graphen
0
A
Antwort
1
Sieht aus wie activeDirection nur, ob oder nicht, um zu bestimmen wird verwendet, um „sendMsg“ in der nächsten Iteration läuft nach this source
Ferner scheint this post ungerichtete Graphen vorschlagen wird nicht unterstützt.
Schließlich bestätigen meine Experimente, was diese Jungs sagen ...
als Behelfslösung können Sie graph.reverse() verwenden, Kanten in die entgegengesetzte Richtung hinzuzufügen. – dataflow
Danke, später erkannte ich, dass die sendMsg sowohl für die Quelle als auch für das Ziel aufgerufen wird, wenn ich EdgeDirection.Either, also ich kann damit eine Nachricht an den Quellknoten vom Quellknoten senden. Es funktioniert, aber es ist schwieriger darüber nachzudenken. Vielleicht muss ich einfach mehr Zeit mit der Prägel-Schnittstelle verbringen, um klar damit anfangen zu können. Ähnliches wie https://github.com/apache/spark/blob/master/graphx/src/main/scala/org/apache/spark/graphx/lib/ConnectedComponents.scala#L47 –
Genau! Tolles Beispiel für die Verwendung von verbundenen Komponenten. Viel besser als die Kanten verdoppeln :) – dataflow