У меня есть DataFrame с именем df1
со следующей схемой:
root
|-- instances: string (nullable = true)
|-- features: vector (nullable = true)
|-- label: double (nullable = false)
Где features
и label
были получены из LabeledPoint
. Я хотел бы создать новый DataFrame, но с изменением содержимого instances
и features
. Для этого я пишу следующее:
val schema2 = new StructType()
.add("instances", "string")
.add("features", "org.apache.spark.ml.linalg.Vector") // also I've tried using `vector`
.add("label", "double")
val schemaEncoder = RowEncoder(schema2)
val df2 = df1.map {
case Row(inst: String, lp: org.apache.spark.ml.linalg.Vector, lbl: Double) => {
val nInst = modifyInstances(inst)
val nLP = nInst.split(",")
Row(nInst, nLP, lbl)
}
}(schemaEncoder)
Когда я запускаю код, проблема будет в .add("features", "org.apache.spark.ml.linalg.Vector")
Любое предложение?