Построить RDD [Edge [ED]] из RDD [Long, Long, ED] в GraphX - PullRequest
0 голосов
/ 07 мая 2018

Я сейчас пытаюсь построить RDD[Edge[String]] из RDD[(Long,Long,String)] Я видел код src Edge, у него есть параметр Edge(VertexId,VertexId,ED), поэтому я думаю, что если у меня есть RDD[(Long,Long,String)], я могу преобразовать его в RDD[Edge[String]]

Мой код

val c:RDD[(String, String)] = something
val s:RDD[(String, String)] = something
val edgeRDD: RDD[Edge[String]] = c
        .join(s).map({
            case (num: String, (src: String, dst: String)) 
                => (src.toLong, dst.toLong, expRelation)
        }
    ) 

Но, наконец, я получил type mismatch ошибку

[error]  found   : (Long, Long, String)
[error]  required: org.apache.spark.graphx.Edge[String]
[error]                     => (src.toLong, dst.toLong, expRelation)
[error]                        ^

Так что мне интересно, есть ли способ построить RDD[Edge[ED]] непосредственно из RDD[(Long,Long,ED)]

1 Ответ

0 голосов
/ 14 июня 2018

Ваша функция не возвращает Edge [String].Измените тип возврата на

Edge(src.toLong, dst.toLong, expRelation)

Код:

val c:RDD[(String, String)] = something
val s:RDD[(String, String)] = something
val edgeRDD: RDD[Edge[String]] = c
        .join(s).map({
            case (num: String, (src: String, dst: String)) 
                => Edge(src.toLong, dst.toLong, expRelation)
        }
    ) 
...