使用GraphX中两个RDD的边连接前两个节点

时间:2015-06-13 20:13:53

标签: scala apache-spark spark-graphx

我第一次使用GraphX,我想逐步构建一个Graph。因此我需要将前两个节点连接到边缘,因为我知道我有2个RDD(每个节点都有一个值):

firstRDD: RDD[((Int, Array[Int]), ((VertexId, Array[Int]), Int))]
secondRDD: RDD[((Int, Array[Int]), ((VertexId, Array[Int]), Int))]  

我想将第一个 VertexId 与第二个连接起来。 感谢您的帮助

1 个答案:

答案 0 :(得分:0)

基本上,您使用mapcase语句来挑选VertexIds,然后使用RDD.zip将它们拼接在一起,然后使用另一个map来创建最终的EdgeRDD :

firstRDD.map{ 
  case ((junk1,junk2), ((vertex1, junk3), junk4)) => vertex1
}.zip(
  secondRDD.map{
    case ((junk1,junk2), ((vertex2, junk3), junk4)) => vertex2 
  }
).map{ case(vertex1, vertex2) => Edge(vertex1, vertex2, 0) }