spark版本是2.2.0,scala版本是2.11.当我使用ml lib时,会发生错误:"列要素必须是org.apache.spark.ml.linalg.VectorUDT@3bfc3ba7类型,但实际上是org.apache.spark.mllib.linalg.VectorUDT@f71b0bce。"
这是我的代码:
import org.apache.spark.ml.classification.LogisticRegression
import org.apache.spark.sql.DataFrame
import org.apache.spark.sql.functions._
val trainingData = dataSet
.select(col("features"), col("label")).cache()
val lr = new LogisticRegression()
.setMaxIter(maxIter)
.setRegParam(regParam)
.setElasticNetParam(0)
.setThreshold(threshold)
.setFitIntercept(false)
val lrModel = lr.fit(trainingData)
这让我困惑了几天。谁能帮助我?
答案 0 :(得分:2)
错误消息非常清楚您正在使用org.apache.spark.mllib.linalg.VectorUDT
(旧的MLlib API),而任何新的API(ML)需要org.apache.spark.ml.linalg.Vector
。
您省略了创建dataSet
的代码部分,但您应该替换:
org.apache.spark.mllib.linalg._
导入:
org.apache.spark.ml._
并相应地调整上游代码。
相关: