假设给定一个RDD属性列表,如attrs
作为图形边缘的源属性,以及一个图形graph
,我如何获得这些源的所有相邻/目标顶点?我目前正在尝试的是:
val map = attrs.zipWithUniqueId().collectAsMap()
val neighbors = graph.triplets.collect {case t if map.contains(t.srcAttr) => t.dstAttr}.distinct()
但是似乎有问题:
1)看起来好像没有给我正确的过滤结果,例如,我看到了一个情况,即元素属性不在地图中,但其对应的邻居在结果中。
2)在执行collectAsMap()时,输入应该适合内存,对吗?那我们有一个很大的属性列表作为输入呢?
那么有人可以建议最好的方法吗?谢谢!