Spark Scala矢量地图ClassCastException

时间:2017-04-27 12:02:58

标签: scala apache-spark apache-spark-mllib

尝试在Spark for Scala中使用Statistics工具,并且难以准备将要执行的向量。

val featuresrdd =   features.rdd.map{_.getAs[Vector]("features")}

featuresrdd: org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector] = MapPartitionsRDD[952] at map at <console>:82

这会生成一个类型为&#39; mllib.linalg.vector&#39;的向量,但是在工具中使用此向量时,向量已更改为键入&#39; DenseVector&#39;。

import org.apache.spark.mllib.linalg._
import org.apache.spark.mllib.stat.Statistics
import org.apache.spark.rdd.RDD

val correlMatrix: Matrix = Statistics.corr(featuresrdd, "pearson")

java.lang.ClassCastException: org.apache.spark.ml.linalg.DenseVector cannot be cast to org.apache.spark.mllib.linalg.Vector

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:1)

使用asML函数将旧Vector转换为ML中的新Vector:

val newMLFeaturesRDD = featuresrdd.map(_.asML)
val correlMatrix: Matrix = Statistics.corr(newMLFeaturesRDD , "pearson")