この質問は、Spark GraphX に関するものです。任意のグラフが与えられた場合、いずれかのノード x が指す任意の 2 つのノード v、w の間にエッジを追加する新しいグラフを計算したいと考えています。新しいエッジには、ポインティング ノードが属性として含まれている必要があります。
つまり、与えられた辺 (x, v, nil) と (x, w, nil) から、辺 (v, w, x) と (w, v, x) を計算します。
これはどのグラフでも機能するはずであり、頂点 ID など、事前にグラフについて何も知る必要はありません。
例
[タスク] 同じノード (例: B) によってポイントされたときに、ノード (例: A、C) 間に 2 つの有向エッジを追加します。
入力グラフ:
┌────┐
┌─────│ B │──────┐
│ └────┘ │
v v
┌────┐ ┌────┐
│ A │ │ C │
└────┘ └────┘
^ ^
│ ┌────┐ │
└─────│ D │──────┘
└────┘
出力グラフ (双方向エッジ = 2 つの有向エッジ):
┌────┐
┌─────│ B │──────┐
│ └────┘ │
v v
┌────┐<───by B───>┌────┐
│ A │ │ C │
└────┘<───by D───>└────┘
^ ^
│ ┌────┐ │
└─────│ D │──────┘
└────┘
出力グラフを返すGraphXクエリをエレガントに書く方法は?