spark scala: преобразовать строковый столбец в двойной - PullRequest
0 голосов
/ 01 февраля 2019

Я новичок в скале и искре.Я импортировал 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.

1 Ответ

0 голосов
/ 01 февраля 2019

Я попытался преобразование, как это, и это сработало

val colNames=Array("_c1","_c2","_c3","_c4","_c5")
 for (colName<-colNames){
     |   data=data.withColumn(colName,col(colName).cast("Double"))
     | }
...