我正在尝试将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]]
答案 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