Апач Спарк; график Х; Как объединить два ребра RDD

Я пытаюсь объединить Edge RDD с RDD (Long, Long, String). Мой край RDD выглядит так:

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

и то, что я хочу объединить, это tuple3, называемый edgeList, который выглядит следующим образом:

(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]]


person hassan    schedule 16.10.2018    source источник


Ответы (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
person Duelist    schedule 16.10.2018