Почему я получаю ошибку несоответствия типов в Pregel в Spark GraphX? - PullRequest
1 голос
/ 03 августа 2020

Я пытаюсь определить функцию sendMessage в Pregel в GraphX, чтобы отправлять атрибут каждого узла своим соседям. граф имеет такую ​​структуру, как:

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

Ключ - это идентификатор узла, и каждый узел имеет 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))
      }

Я получаю следующую ошибку для функции отправки сообщения

введите описание изображения здесь

Может ли кто-нибудь помочь мне с этой ошибкой ??

1 Ответ

2 голосов
/ 03 августа 2020

Проблема здесь: у вас есть график, у которого свойство узлов - (VertexId,Double), но вы определили e: EdgeTriplet[VertexId, ED], который необходимо исправить, и он должен быть e: EdgeTriplet[(VertexId,Double), ED]. Это означает, что ваши вершины или свойства узлов в Graph имеют (VertexId,Double) в качестве своего свойства.

...