这个问题是关于 Spark GraphX 的。给定一个任意图,我想计算一个新图,它在任意两个节点 v、w 之间添加边,这两个节点都由某个节点 x 指向。新边应包含指向节点作为属性。
也就是说,给定边 (x, v, nil) 和 (x, w, nil) 计算边 (v, w, x) 和 (w, v, x)。
它应该适用于任何图形,并且不需要我事先了解有关图形的任何信息,例如顶点 ID。
例子
[任务] 当被同一节点(例如B)指向时,在节点(例如A,C)之间添加两条有向边。
输入图:
┌────┐
┌─────│ B │──────┐
│ └────┘ │
v v
┌────┐ ┌────┐
│ A │ │ C │
└────┘ └────┘
^ ^
│ ┌────┐ │
└─────│ D │──────┘
└────┘
输出图(双向边 = 两条有向边):
┌────┐
┌─────│ B │──────┐
│ └────┘ │
v v
┌────┐<───by B───>┌────┐
│ A │ │ C │
└────┘<───by D───>└────┘
^ ^
│ ┌────┐ │
└─────│ D │──────┘
└────┘
如何优雅地编写返回输出图的 GraphX 查询?