GraphX:给定一个 VertexID 获取所有连接的顶点

GraphX: Given one VertexID get all connected Vertices

所以基本上我在 GraphX 中有一个图和一个图中特定顶点的 ID。

鉴于该 VertexID,我如何将所有直接连接的顶点获取到该顶点? (IE,只差一个边)。

谢谢

假设您要使用 GraphX Programming Guide 中的示例图查找直接连接到 "franklin" (VertexId 5L) 的所有用户。最简单也可能是最有效的方法是使用 collectNeighborIds / graph.collectNeighbors 然后是 lookup:

import org.apache.spark.graphx.EdgeDirection

val direction: EdgeDirection = ???  // In, Out ...
graph.collectNeighborIds(direction).lookup(5L)

另一种方法是使用tripletsfilter结果:

// "franklin" is source
graph.triplets.collect {
  case t if t.srcId == 5L => t.dstId
}

当然,您可以添加其他方向并传递其他信息,例如 srcAttrdstAttrvertexAttr。如果您更喜欢保留完整的三联体,您可以将 collect 替换为 filter。然而,如果您需要单边/顶点查找,Spark 很可能不是完成这项工作的最佳工具。