У меня есть DataFrame, в котором строки имеют два удвоения. Я хочу сгенерировать форматированную строку, представляющую DataFrame как список JSON. Вот мой код:Извлечение строки из RDD
df.rdd.take(5)
val values = df.rdd.map{ case Row(x :Double ,y: Double) => (x,y,50) }
take(5)
из РДА выглядит следующим образом:
Array[org.apache.spark.sql.Row] = Array([41.64068433800631,37.689287325884315], [37.01941012184662,30.390807326639077], [34.02364443854447,40.55991398223156], [41.52505975127479,42.02651332703204], [39.33233947587333,33.62091706778894])
Я хочу иметь строку, которая выглядит следующим образом:
"[[41.64068433800631,37.689287325884315, 50], [37.01941012184662,30.390807326639077, 50], [34.02364443854447,40.55991398223156, 50], [41.52505975127479,42.02651332703204, 50], [39.33233947587333,33.62091706778894, 50]]
Я попробовал последовательный подход к генерации строки, но я получаю странную ошибку:
val valuesCol = values.collect()
var a = "["
for(a <- 1 to valuesCol.length){
a = a + "[" + valuesCol(1)._1+ "," + valuesCol(1)._2 + "," + valuesCol(1)._3 + "]"
}
a = a + "]"
println(a)
Ошибка:
error: reassignment to val
Как вы можете видеть a
является var
. Я не понимаю, в чем проблема. Любые способы исправить эту ошибку или любой другой подход будут оцениваться.