如何获取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编程。

回答:

假设你有graph1Graph(vertexRdd1, edgeRdd1))和graph2Graph(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

回到顶部