【发布时间】:2019-08-20 12:40:02
【问题描述】:
我是 spark graphx 的新手,并尝试分布式计算特定节点之间的交集,例如 ID = 1 的节点与其在 spark GraphX 中的邻居。
我已经使用 GraphLoader.edgeListFile(sc,"Path") 加载了边缘列表。然后我用 collectNeighborIds 找到节点 id = 1 的邻居 ID,并在其上执行映射函数以查找每个邻居邻居并计算与所选节点(ID = 1 的节点)邻居的交集。 这是代码。
val graph = GraphLoader.edgeListFile(sc,path to edgelist)
val node_collect_neighborsId1 = graph.collectNeighborIds(EdgeDirection.Either).filter(x=> x._1 == 1)
val node1_neighbors_ID=node_collect_neighborsId1.flatMap(x=> x._2)
def compute_intersection (vertex :VertexId) = {
var node2_collect_neighborsId: RDD[(VertexId, Array[VertexId])] = graph.collectNeighborIds(EdgeDirection.Either).filter(x=> x._1 == vertex)
var node2_neighbors_ID=node2_collect_neighborsId.flatMap(x=> x._2)
var intersect_two_node = node1_neighbors_ID.intersection(node2_neighbors_ID)
(vertex, intersect)
}
val result = node1_neighbors_ID.map(compute_intersection)
我希望在最后,结果变量应该包含包含顶点 id 的行,该顶点 id 是邻居的 id 和我们称之为交集的两组节点邻居之间的公共节点。但我不能打印它们,看看里面有什么。 请帮我解决计算交集和打印结果的问题
【问题讨论】:
-
你能提供一些输入输出的例子吗?
-
例如节点 1 有这个邻居 => (2,3,4,5) 并且每个节点都有自己的邻居,例如节点 2 有这个邻居 =>(3,5, 8)。数字是节点 ID。在这种情况下,节点 1 和 2 的交点将是 (3,5)。我想用 map 函数为所有邻居获取这个结果,并调用 compute_intersection 函数来计算它们并将它存储在结果变量中,它是一个 RDD。但我无法打印结果以查看其中的内容,并且我不确定我编写的代码是否正确
-
我正在研究社区检测,其中一部分我需要获取一个节点与其邻居之间的相似性,为此,我需要获取所选节点与其邻居之间的交集.这是我遇到的问题
标签: scala apache-spark graph