Apache Spark;График X;Как совместить два ребра RDD - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь объединить 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 

ИЛИ

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 голосов
/ 16 октября 2018

Вы можете использовать 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
...