类型不匹配 flink 图社区
Posted
技术标签:
【中文标题】类型不匹配 flink 图社区【英文标题】:type mismatch flink graph community 【发布时间】:2016-08-26 22:50:47 【问题描述】:我正在尝试执行一个非常简单的社区检测代码,但它返回错误:
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))
^
【问题讨论】:
错误:(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)) 【参考方案1】:CommunityDetection
算法需要 Graph
和 Long
Id 和顶点值以及 Double
边权重。在您的代码中,您为顶点和边定义 String
值。
请查看at the Gelly documentation 了解更详细的使用信息。
【讨论】:
我正在使用以下代码,但仍然出现异常。你能举一个工作代码的例子吗?谢谢你。 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(vertices, edges, env) 问题是您使用的是Double
顶点值。顶点 ID 和值都必须是 Long
。尝试用例如替换您的顶点创建val vertices = Seq(new Vertex[Long, Long](1L, 1L), new Vertex[Long, Long](2L, 4L))
.以上是关于类型不匹配 flink 图社区的主要内容,如果未能解决你的问题,请参考以下文章