Построить RDD[Edge[ED]] из RDD[Long, Long, ED] в GraphX
Я сейчас пытаюсь построить 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 ответ
Решение
Ваша функция не возвращает 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)
}
)