如何获取Spark Graphx中常用边的数量?
举例来说,如果我有两个图形与顶点和边是这样的:如何获取Spark Graphx中常用边的数量?
import org.apache.spark.graphx._ import org.apache.spark.rdd.RDD
val vertexRdd1: RDD[(VertexId, (String, Int))] = sc.parallelize(Array(
(1L, ("a", 28)),
(2L, ("b", 27)),
(3L, ("c", 65))
))
val edgeRdd1: RDD[Edge[Int]] = sc.parallelize(Array(
Edge(1L, 2L, 1),
Edge(2L, 3L, 8)
))
val vertexRdd2: RDD[(VertexId, (String, Int))] = sc.parallelize(Array(
(1L, ("a", 28)),
(2L, ("b", 27)),
(3L, ("c", 28)),
(4L, ("d", 27)),
(5L, ("e", 65))
))
val edgeRdd2: RDD[Edge[Int]] = sc.parallelize(Array(
Edge(1L, 2L, 1),
Edge(2L, 3L, 4),
Edge(3L, 5L, 1),
Edge(2L, 4L, 1)
))
我怎样才能得到这两个图表之间的共同边的数量,而不考虑边缘属性?因此,在上面的例子中,公共边的数量是2,并且公共边是:边(1L,2L,1)和边(2L,3L,8)共有的边(1L,2L,1) 2L,3L,4)。
我在scala编程。
回答:
假设你有graph1
(Graph(vertexRdd1, edgeRdd1)
)和graph2
(Graph(vertexRdd2, edgeRdd2))
)可以在地图边缘(srcId, dstId)
,然后使用intersection
方法:
val srcDst1 = graph1.edges.map(e => (e.srcId, e.dstId)) val srcDst2 = graph2.edges.map(e => (e.srcId, e.dstId))
srcDst1.intersection(srcDst2).count()
以上是 如何获取Spark Graphx中常用边的数量? 的全部内容, 来源链接: utcz.com/qa/259953.html