Я читаю данные из файла для создания ребер графа. Я объявил массив и добавил ребра по одному. Этот код работает нормально:
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 [_>:
(Long, Long, Object) с
net.sansa_stack.template.spark.rdf.TripleReader.edgeProperty <:
Продукт с сериализуемым]] требуется:
Array [org.apache.spark.graphx.Edge [(Long, Long, Object)]] Примечание.
org.apache.spark.graphx.Edge [_>: (Long, Long, Object) с
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("", "")) )
Это не дает мне ошибки компиляции, но в массив ничего не добавляется.