【问题标题】:Why i get Typemismatch error in Pregel in Spark GraphX?为什么我在 Spark GraphX 中的 Pregel 中出现 Typemismatch 错误?
【发布时间】:2020-08-03 11:25:12
【问题描述】:

我正在尝试在 GraphX 的 Pregel 中定义 sendMessage 函数,以将每个节点属性发送给它的邻居。 该图具有如下结构:

(1,(4,0.08))
(5,(9,0.9))
...

关键是节点ID,每个节点都有一个Tuple2[VertexId,Double]作为它的属性,它应该把它们发送给它的邻居。 这是我正在尝试编写的代码:

def run[VD, ED: ClassTag](graph: Graph[VD, ED], maxSteps: Int): Graph[VD, ED] = {

    val temp_graph: Graph[(VertexId, Double), ED] = graph.mapVertices((x, y)=> (x,1.toDouble))

    def sendMessage(e: EdgeTriplet[VertexId, ED]): Iterator[(VertexId,(VertexId, Double))] = {
        Iterator((e.srcId,e.dstAttr), (e.dstId,e.srcAttr))
      }

发送消息功能出现以下错误

谁能帮我解决这个错误??

【问题讨论】:

    标签: apache-spark spark-graphx


    【解决方案1】:

    问题出在这里:您有一个图表,其节点属性为(VertexId,Double),但您定义了需要更正的e: EdgeTriplet[VertexId, ED],它应该是e: EdgeTriplet[(VertexId,Double), ED]。这意味着 Graph 中的顶点或节点属性具有 (VertexId,Double) 作为它们的属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多