Apache Spark;图X;如何结合两个边缘RDD

时间:2018-10-16 14:59:24

标签: scala apache-spark rdd spark-graphx

我正在尝试将Edge RDD与RDD(Long,Long,String)组合在一起。我的边缘RDD看起来像:

val myEdges=sc.makeRDD(Array(Edge(1L,2L,"friend")))

我想要结合的东西是名为edgeList的tuple3,如下所示:

(5,3,Neighbour)
(2,3,Brother)

现在,如果我尝试使用并集操作将这两个RDD组合在一起:

val newEdges=myEdges ++ edgeList 

OR

val newEdges=myEdges.union(edgeList)

我收到以下错误:

type mismatched; expect RDD[Edge[String]] , actual RDD[(Long,Long,String)].

我的问题是如何将RDD[(Long,Long,String)]转换为RDD[Edge[String]]

1 个答案:

答案 0 :(得分:1)

您可以使用map

val edgeList: RDD[(Long, Long, String)] = sc.makeRDD[(Long, Long, String)](Seq((1L, 1L, "first"), (2L, 2L, "second"), (3L, 3L, "third")))
val result = edgeList.map {
  case (srcId, dstId, attr) => Edge(srcId, dstId, attr)
}
myEdges ++ result // will compile