【问题标题】:Array of Graphs in Spark GraphxSpark Graphx 中的图形数组
【发布时间】:2018-05-05 21:07:30
【问题描述】:
我有多个相同类型的图表。我想将它们存储在一个数组中。但是当我在数组中附加一个图形时,我得到了一个错误,即图形中不支持“++”操作。
当我使用这个方法时:
var graphsArray = Array.empty[Graph[Object,Object]]
graphsArray :+ Graph(myVertices, myEdges)
我得到的是空数组,没有添加任何值。
【问题讨论】:
标签:
scala
apache-spark
spark-graphx
【解决方案1】:
默认的 scala Array 是不可变的。这意味着:+ 方法正在返回一个具有新值的新数组,而graphsArray 保持与创建时相同(空)。由于您没有将 :+ 的结果分配给任何东西,因此您将丢失结果。
如果你想使用可变数组,你可以使用ArrayBuffer。如果您想保留默认的 scala 不可变行为,可以使用 fold 添加所有图表。
val emptyArray = Array.empty[Graph[Object, Object]]
val myGraphs = ...
val graphsArray = myGraphs.fold(emptyArray) { case (arr, elm) => arr :+ elm }