【发布时间】:2018-05-06 17:41:16
【问题描述】:
我正在从文件中读取数据以创建图形的边缘。我已经声明了一个数组并在其中一一添加边。此代码运行良好:
class AIRecipes()
case class edgeProperty(val relation: String, val usedIn: String) extends AIRecipes
var edgeArray = Array(Edge(0L, 0L, edgeProperty("", "")))
edgeArray = edgeArray ++ Array(Edge(VertexId, VertexId, edgeProperty("", "")) )
但在第一行中,我不想用虚拟值声明一个额外的边,而是想声明一个这样的空数组:
var edgeArray = Array.empty[Edge[(Long, Long, Object)]]
edgeArray = edgeArray ++ Array(Edge(VertexId, VertexId, edgeProperty("", "")) )
但它给了我关于“++”的以下编译错误:
类型不匹配;找到:数组[org.apache.spark.graphx.Edge[_ >: (长,长,对象)与 net.sansa_stack.template.spark.rdf.TripleReader.edgeProperty <: array long object org.apache.spark.graphx.edge>: (Long, Long, Object) with net.sansa_stack.template.spark.rdf.TripleReader.edgeProperty <:>: org.apache.spark.graphx.Edge[(Long, Long, Object)],但类 Array 在类型 T 中是不变的。您可能希望 调查通配符类型,例如
_ >: org.apache.spark.graphx.Edge[(Long, Long, Object)]。
我也试过这个:
edgeArray :+ Array(Edge(VertexId, VertexId, edgeProperty("", "")) )
它没有给我编译错误,但没有在数组中添加任何内容。
【问题讨论】:
-
你能把
edgeProperty的签名贴出来吗? -
@user9613318 edgeProperty 是一个类。
class AIRecipes(), case class edgeProperty(val relation: String, val usedIn: String) extends AIRecipes
标签: arrays scala apache-spark spark-graphx