Привет, я новичок в 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
теперь проблема в том, что номер элемента в массиве атрибута вершины графа не всегда равен 2, иногда он может быть больше 2. Поэтому, если номер элемента в массиве равен 3, код выше не может работа.
Я попытался использовать цикл, чтобы сделать это:
var j=graph.mapVertices((id, v) => {
for(i <- 0 until 2){
v(i)/num(i)
}
}).vertices.collect
но вместо этого я получил пустой массив для каждой вершины. цикл невозможен в mapVertices?
так есть ли способ сделать это? использует mapVertices путь? я не могу придумать какой-либо другой способ изменить значение вершин. Спасибо, любая помощь приветствуется