2016-08-26 5 views
0

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

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)) 


          ^
+0

Ошибка: (30, 33) несоответствие типа; найдено: org.apache.flink.graph.library.CommunityDetection [Long] required: org.apache.flink.graph.GraphAlgorithm [Long, String, String ,?] val resultGraph = graph.run (новый CommunityDetection [Long ] (30, 0.5)) –

ответ

0

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

+0

Я использую следующий код и все еще получаю исключение. Не могли бы вы привести пример рабочего кода, пожалуйста? Спасибо. val env = ExecutionEnvironment.getExecutionEnvironment val vertices = Seq (новый Vertex [Long, Double] (1L, 0.1), новый Vertex [Long, Double] (2L, 0.4)) val edge = Seq (новый Edge [Long, Double ] (1L, 2L, 0.5)) val graph = Graph.fromCollection (вершины, ребра, env) –

+0

Проблема в том, что вы используете значения вершин Double. Имиды вершин и значения должны быть 'Long'. Попробуйте заменить создание вершины, например. 'val vertices = Seq (новый Vertex [Long, Long] (1L, 1L), новый Vertex [Long, Long] (2L, 4L)). – vasia

Смежные вопросы