несоответствие типов flink graph community

Я пытаюсь выполнить очень простой код для обнаружения сообщества, но он возвращает ошибку:

import org.apache.flink.graph.library.CommunityDetection
import org.apache.flink.graph._
import org.apache.flink.graph.scala.Graph
import java.lang.Long
import java.lang.Double
import org.apache.flink.api.scala._

val env = ExecutionEnvironment.getExecutionEnvironment
val vertices = Seq(new Vertex[Long, String](1L, "foo"), new Vertex[Long, String](2L, "bar"))
val edges = Seq(new Edge[Long, String](1L, 2L, "foobar"))

val graph = Graph.fromCollection(vertices, edges, env)
val updatedGraph = graph.mapVertices(v => v.getValue + 1)
val resultGraph = graph.run(new CommunityDetection[Long](30, 0.5))


                            ^

person Dzmitry Haikov    schedule 26.08.2016    source источник
comment
Ошибка:(30, 33) несоответствие типов; найдено: org.apache.flink.graph.library.CommunityDetection[Long] требуется: org.apache.flink.graph.GraphAlgorithm[Long,String,String,?] val resultGraph = graph.run(new CommunityDetection[Long](30 , 0,5))   -  person Dzmitry Haikov    schedule 27.08.2016


Ответы (1)


Алгоритм CommunityDetection ожидает Graph с Long идентификаторами и значениями вершин и Double весами ребер. В вашем коде вы определяете String значений для вершин и ребер. Пожалуйста, посмотрите в документации Gelly для получения более подробной информации об использовании.

person vasia    schedule 28.08.2016
comment
Я использую следующий код и все еще получаю исключение. Не могли бы вы привести пример рабочего кода, пожалуйста? Спасибо. val env = ExecutionEnvironment.getExecutionEnvironment val vertices = Seq(new Vertex[Long, Double](1L, 0.1), new Vertex[Long, Double](2L, 0.4)) val edges = Seq(new Edge[Long, Double]( 1L, 2L, 0,5)) val graph = Graph.fromCollection(вершины, ребра, env) - person Dzmitry Haikov; 02.09.2016
comment
Проблема в том, что вы используете Double значений вершин. И идентификаторы вершин, и значения должны быть Long. Попробуйте заменить создание вершины, например. val vertices = Seq(new Vertex[Long, Long](1L, 1L), new Vertex[Long, Long](2L, 4L)). - person vasia; 02.09.2016