Scala spark将向量[org.apache.spark.sql.Row]转换为org.apache.spark.ml.linalg.Vector

Scala spark将向量[org.apache.spark.sql.Row]转换为org.apache.spark.ml.linalg.Vector,scala,apache-spark,Scala,Apache Spark,我试图计算数据帧中的行和向量之间的距离(org.apache.spark.ml.linalg.vector) 我计划用K-Means算法进行异常检测,所以我得到了中心id,这是一个向量,然后我可以计算数据帧中的行距离,但我得到了以下错误: Vectors.sqdist(v1,centerid) <console>:54: error: type mismatch; found : scala.collection.immutable.Vector[org.apache.spar

我试图计算数据帧中的行和向量之间的距离(
org.apache.spark.ml.linalg.vector

我计划用K-Means算法进行异常检测,所以我得到了中心id,这是一个向量,然后我可以计算数据帧中的行距离,但我得到了以下错误:

Vectors.sqdist(v1,centerid)
<console>:54: error: type mismatch;
 found   : scala.collection.immutable.Vector[org.apache.spark.sql.Row] 
Vectors.sqdist(v1,centerid)
:54:错误:类型不匹配;
找到:scala.collection.immutable.Vector[org.apache.spark.sql.Row]

如何将
向量[org.apache.spark.sql.Row]
转换为
org.apache.spark.ml.linalg.Vector

您可以使用VectorAssembler将行转换为特征向量。试试这个:

  val df: DataFrame = ???

  val vector = new VectorAssembler().setInputCols(Array("yourInputColumns")).setOutputCol("features")

  vector.transform(df)
作为输出,您将得到一个Dataframe,其中一列的类型为
org.apache.spark.ml.linalg.Vector

请分享您的代码