您是Scala和graphx的新手。所以我有一个顶点这样的图
graph.vertices.collect
Array[(org.apache.spark.graphx.VertexId, Array[Double])] = Array((1,Array(0.5, 0.5)), (2,Array(0.25, 0.0625)), (3,Array(0.125, 0.125)), (4,Array(0.0625, 0.0625)), (5,Array(0.0625, 0.25)))
现在说我想用一个数字(从一个数组中)划分每个第一个数组元素,并用一个不同的数字划分每个第二个数组元素,我用mapVertices这样做:
var newGraph=graph.mapVertices((id, v) => {
(v(0)/num(0),v(1)/num(1)
}).vertices.collect
现在的问题是,图的顶点的array属性中的元素数不总是2,有时可能大于2。因此,如果数组中元素的数为3,则上面的代码不能工作。
我尝试使用循环来完成它:
var j=graph.mapVertices((id, v) => {
for(i <- 0 until 2){
v(i)/num(i)
}
}).vertices.collect
但是结果却是每个顶点都有一个空数组。 mapVertices中不能循环吗?
那么有什么办法可以做到这一点?使用mapVertices的路要走吗?我想不出任何其他方法来更改顶点值。谢谢任何帮助