VectorAssembler不支持StringType类型的scala spark转换
发布时间:2020-12-16 09:56:59 所属栏目:安全 来源:网络整理
导读:我有一个包含字符串列的数据框,我打算使用它作为k-means的输入使用spark和 scala.我正在使用以下方法转换数据框的字符串类型列: val toDouble = udf[Double,String]( _.toDouble) val analysisData = dataframe_mysql.withColumn("Event",toDouble(datafram
我有一个包含字符串列的数据框,我打算使用它作为k-means的输入使用spark和
scala.我正在使用以下方法转换数据框的字符串类型列:
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()) 当我打印analyzeData模式时,转换是正确的.但我得到一个例外:VectorAssembler不支持StringType类型 谢谢 解决方法
实际上,VectorAssembler Transformer不接受字符串.因此,您需要确保列与数字,布尔值,矢量类型匹配.确保您的udf正在做正确的事情,并确保没有任何列具有StringType.
要将Spark DataFrame中的列转换为另一种类型,请将其简化并使用cast()DSL函数,如下所示: val analysisData = dataframe_mysql.withColumn("Event",dataframe_mysql("Event").cast(DoubleType)) 它应该工作! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |