【发布时间】:2020-01-30 13:08:16
【问题描述】:
我从 CSV 文件创建了名为 df 的数据框。数据框是
+---+---+---+--------+-------------------------------------------------+
|X |Y |Z |class |source |
+---+---+---+--------+-------------------------------------------------+
|33 |36 |51 |Eat_meat|Accelerometer-2011-03-24-13-21-39-eat_meat-f1.txt|
|33 |36 |51 |Eat_meat|Accelerometer-2011-03-24-13-21-39-eat_meat-f1.txt|
|33 |35 |53 |Eat_meat|Accelerometer-2011-03-24-13-21-39-eat_meat-f1.txt|
|31 |37 |52 |Eat_meat|Accelerometer-2011-03-24-13-21-39-eat_meat-f1.txt|
|32 |36 |52 |Eat_meat|Accelerometer-2011-03-24-13-21-39-eat_meat-f1.txt|
|32 |36 |51 |Eat_meat|Accelerometer-2011-03-24-13-21-39-eat_meat-f1.txt|
|32 |36 |51 |Eat_meat|Accelerometer-2011-03-24-13-21-39-eat_meat-f1.txt|
|33 |36 |53 |Eat_meat|Accelerometer-2011-03-24-13-21-39-eat_meat-f1.txt|
|33 |35 |52 |Eat_meat|Accelerometer-2011-03-24-13-21-39-eat_meat-f1.txt|
|33 |36 |52 |Eat_meat|Accelerometer-2011-03-24-13-21-39-eat_meat-f1.txt|
+---+---+---+--------+-------------------------------------------------+
我想应用 StringIndexer 将名为 class 的列转换为索引。我尝试了以下代码。
val indexer = new StringIndexer()
.setInputCol("X")
.setOutputCol("classIndex")
val indexed = indexer.fit(df).transform(df)
indexed.show()
此代码引发以下错误。
线程“main”中的异常 java.lang.NoSuchMethodError: org.apache.spark.sql.expressions.UserDefinedFunction.asNondeterministic()Lorg/apache/spark/sql/expressions/UserDefinedFunction; 在 org.apache.spark.ml.feature.StringIndexerModel.transform
当我尝试应用转换功能时会发生此错误。我该如何解决这个错误?
【问题讨论】:
-
希望你使用的是 spark 2.4
-
@Rakshith 是的。 Spark 2.4.0 版和 Scala 2.11.8 版
标签: scala apache-spark apache-spark-sql apache-spark-mllib