【问题标题】:Type mismatch on vertex RDD顶点 RDD 上的类型不匹配
【发布时间】:2018-11-15 18:25:15
【问题描述】:

一个 GraphX 顶点可以存储多少属性(属性键:值对)?

  val vertexArray = Array(
    (1L, ("Name", "Alice"), ("age", 28), ("major", "ECE")),
    (2L, ("Name", "John"), ("age", 23), ("major", "History")),
    (3L, ("Name", "Mark"), ("age", 34), ("major", "Education"))
  )

  val edgeArray = Array(
    Edge(1L, 3L, "cousin"),
    Edge(1L, 2L, "spouse")
  )
  val vertexRDD = sc.parallelize(vertexArray)
  val edgeRDD = sc.parallelize(edgeArray)

  val graph = Graph(vertexRDD, edgeRDD)

当我创建图表时,上面的代码给了我错误。

Error:(28, 21) type mismatch;
 found   : org.apache.spark.rdd.RDD[(Long, (String, String), (String, Int), (String, String))]
 required: org.apache.spark.rdd.RDD[(org.apache.spark.graphx.VertexId, ?)]
    (which expands to)  org.apache.spark.rdd.RDD[(Long, ?)]
Error occurred in an application involving default arguments.
  val graph = Graph(vertexRDD, edgeRDD)
                    ^

另外,vertexId 是否总是必须为 Long,或者 graphX 是否也支持 String vertexId(如果我想使用 java UUID)?

【问题讨论】:

  • @yogesh.tewari 不知道为什么这被标记为neo4j。我删除了它。另外:请用您的错误编辑您的问题;不要在 cmets 中添加额外的细节。
  • 我理解错误,只是想确认是否有一种方法可以像在 neo4j 节点中一样在 graphx 顶点中存储多个属性。
  • 该评论是您第一次提到与 neo4j 相关的任何事情。无论如何:这不是 neo4j 问题。
  • 嗨,大卫,我指的是 Neo4j,所以我想我会标记它。但如果它没有意义,那么我将删除它。我将移动原问题中的错误日志。

标签: apache-spark spark-graphx


【解决方案1】:

如错误所示,vertexRDD 必须是 RDD[(VertexId, ?)] 类型 - 换句话说,它必须是 Tuple2RDD,其中第一个元素必须是 VertexId 类型。在您的示例中,您创建了一个无效的 Tuple4RDD。为了使其有效,将最后三个元素包装在 Tuple3 中,如下所示:

 val vertexArray = Array(
  (1L, (("Name", "Alice"), ("age", 28), ("major", "ECE"))),
  (2L, (("Name", "John"), ("age", 23), ("major", "History"))),
  (3L, (("Name", "Mark"), ("age", 34), ("major", "Education"))))

要回答你的第二个问题,是的,VertexId 必须是 Long :)

【讨论】:

  • 当我在写一个测试用例时,我遇到了错误......类型不匹配;找到:org.apache.spark.rdd.RDD[String] 需要:org.apache.spark.rdd.RDD[java.io.Serializable] 注意:String <: java.io.serializable rdd t ...>
  • Ehm,此评论似乎与此问题或答案无关。请将其作为一个新问题发布,详细解释您的问题。
【解决方案2】:

您需要传递第三个参数“defaultVertexAttr”

val graph = Graph(vertexRDD, edgeRDD, (("Name", ""), ("age", 0), ("major", "")))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-17
    • 2017-06-25
    • 2019-01-09
    • 1970-01-01
    • 2021-01-22
    • 2018-01-29
    • 1970-01-01
    • 2015-04-28
    相关资源
    最近更新 更多