所以基本上我在GraphX的图形中有一个图形和一个特定顶点的ID。
鉴于VertexID,如何将所有直接连接的顶点连接到该顶点? (IE,只有一个边缘)。
谢谢
答案 0 :(得分:1)
假设您希望使用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)
另一种方法是使用triplets
和filter
结果:
// "franklin" is source
graph.triplets.collect {
case t if t.srcId == 5L => t.dstId
}
当然,您可以添加其他指示并传递其他信息,例如srcAttr
,dstAttr
或vertexAttr
。如果您希望保留完整的三元组,则可以将collect
替换为filter
。然而,如果你需要单边/顶点查找,Spark很可能不是最好的工具。