【问题标题】:Construct a RDD[Edge[ED]] from RDD[Long, Long, ED] in GraphX从 GraphX 中的 RDD[Long, Long, ED] 构造一个 RDD[Edge[ED]]
【发布时间】:2018-10-17 05:31:33
【问题描述】:

我现在正在尝试从RDD[(Long,Long,String)] 构造一个RDD[Edge[String]] 我看过Edge的src代码,它有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[(Long,Long,ED)]构造一个RDD[Edge[ED]]

【问题讨论】:

  • Edge(src.toLong, dst.toLong, expRelation)
  • @user9613318 哇!它似乎有效!谢谢!

标签: scala apache-spark rdd spark-graphx


【解决方案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)
        }
    ) 

【讨论】:

    猜你喜欢
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 2017-08-20
    • 2017-03-08
    • 1970-01-01
    相关资源
    最近更新 更多