阿帕奇星火;图X;如何合并两个边缘RDD
Apache Spark; Graph X ; How to combine two edge RDD
我正在尝试将 Edge RDD 与 RDD(Long,Long,String) 结合起来。我的边缘 RDD 看起来像:
val myEdges=sc.makeRDD(Array(Edge(1L,2L,"friend")))
我想要组合的是名为 edgeList 的元组 3,如下所示:
(5,3,Neighbour)
(2,3,Brother)
现在,如果我尝试使用联合操作合并这两个 RDD:
val newEdges=myEdges ++ edgeList
或
val newEdges=myEdges.union(edgeList)
我收到以下错误:
type mismatched; expect RDD[Edge[String]] , actual RDD[(Long,Long,String)].
我的问题是如何将RDD[(Long,Long,String)]
转换成RDD[Edge[String]]
您可以使用 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
我正在尝试将 Edge RDD 与 RDD(Long,Long,String) 结合起来。我的边缘 RDD 看起来像:
val myEdges=sc.makeRDD(Array(Edge(1L,2L,"friend")))
我想要组合的是名为 edgeList 的元组 3,如下所示:
(5,3,Neighbour)
(2,3,Brother)
现在,如果我尝试使用联合操作合并这两个 RDD:
val newEdges=myEdges ++ edgeList
或
val newEdges=myEdges.union(edgeList)
我收到以下错误:
type mismatched; expect RDD[Edge[String]] , actual RDD[(Long,Long,String)].
我的问题是如何将RDD[(Long,Long,String)]
转换成RDD[Edge[String]]
您可以使用 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