我是scala和spark的新手。我按如下所示导入了一个csv,并希望在spark ML中使用它。
scala>var data = spark.read.format("csv").load("E:\\...\\file.csv")
scala>data.show(4)
+---+---+---+----+---+---+
|_c0|_c1|_c2| _c3|_c4|_c5|
+---+---+---+----+---+---+
| 0| 30| 1| -26| 2|173|
| 3| 31| 2|-100| 3| 31|
| 1| 56| 1| -28| 1|158|
| 2| 12| 3| -49| 1| 66|
+---+---+---+----+---+---+
在组装功能部件时,我被告知不支持数据类型字符串。如何将这些列从字符串转换为双精度。谢谢
scala>val colArrary=Array("_c1","_c2","_c3","_c4","_c5")
scala>var assembler=new VectorAssembler().setInputCols(colArrary).setOutputCol("features")
scala>val vecDF:DataFrame=assembler.transform(data)
java.lang.IllegalArgumentException: Data type string of column _c1 is not supported.
答案 0 :(得分:0)
我尝试过这样的转换,并且有效
val colNames=Array("_c1","_c2","_c3","_c4","_c5")
for (colName<-colNames){
| data=data.withColumn(colName,col(colName).cast("Double"))
| }