1
私は文字列を含むデータフレームを持っています。私はsparkとscalaを使用してk-meansの入力として使用する予定です。VectorAssemblerはStringType型をサポートしていませんscala spark convert
val toDouble = udf[Double, String](_.toDouble)
val analysisData = dataframe_mysql.withColumn("Event", toDouble(dataframe_mysql("event"))).withColumn("Execution", toDouble(dataframe_mysql("execution"))).withColumn("Info", toDouble(dataframe_mysql("info")))
val assembler = new VectorAssembler()
.setInputCols(Array("execution", "event", "info"))
.setOutputCol("features")
val output = assembler.transform(analysisData)
println(output.select("features", "execution").first())
変換データスキーマを出力すると、変換が正しいときに、データフレームの文字列型カラムを変換しています。私は例外を取得しています:VectorAssemblerはStringTypeタイプ をサポートしていません。これは、私の値がまだ文字列であることを意味します!スキーマの種類だけでなく、値をどのように変換できますか?
おかげ
浮動小数点数に変換する必要があるのは1〜数列ではなく、50または100または300である場合はどうしますか? –
ちょっと@EvanZamir、 'df.selectExpr(" cast(col1 as float)col1 "、" cast(col2 as float)col2 ")のようにsthを試すことができます。 –