【发布时间】:2016-09-28 09:45:48
【问题描述】:
我有一个包含字符串列的数据框,我计划使用 spark 和 scala 将其用作 k-means 的输入。我正在使用以下方法转换数据框的字符串类型列:
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())
当我打印 analysisData 模式时,转换是正确的。但我遇到了一个异常:VectorAssembler 不支持 StringType 类型 这意味着我的价值观仍然是字符串!如何转换值而不仅仅是架构类型?
谢谢
【问题讨论】:
标签: scala vector apache-spark types