У меня есть DataFrame с столбцом с именем KFA, содержащий строку с угловыми скобками на обоих концах. В этой длинной строке есть 4 двойных значения. Я хотел бы преобразовать это в DataFrame с векторами.Как преобразовать DataFrame со строкой в DataFrame с векторами в Scala (Spark 2.0)
Это первый элемент DataFrame:
> dataFrame1.first()
res130: org.apache.spark.sql.Row = [[.00663 .00197 .29809 .0034]]
Не могли бы вы помочь мне тайному его в плотный вектор с 4 двойными значениями.
Я попробовал эту команду
dataFrame1.select("KFA")
.map((x=>x.mkString("").replace("]","").replace("[","").split(" ")))
.rdd.map(x=>Vectors.dense(x(0).toDouble,x(1).toDouble,x(2).toDouble,x(3).toDouble,x(4).toDouble))
Это выглядит очень неуклюже и нечитаемым. Не могли бы вы предложить другие способы сделать это?
Что цель 'mkString', если вы только собираетесь разделить его? –
@ cricket_007 Используется 'mkString', потому что я не мог использовать' .replace ("]", "") 'на spark.sql.Row –
Вам не нужно создавать строку, я не думаю. Вы можете 'getAs [Double]' из объекта Row –