在Spark 机器学习中,Vector向量和Metricx矩阵是最常用的两种数据类型。特别是Vector向量类型,在使用Vector向量类型时,默认是不会导入Spark定义的Vector类型的。默认使用scala.collection.immutable.Vector,此时使用Spark ml算法就会报类型异常。 代码:
val (meanVal, varianceVal) = df.select(metrics("mean", "variance").summary($"features", $"weight").as("summary")) .select("summary.mean", "summary.variance") .as[(Vector, Vector)] .first()异常信息:
Error:(31, 9) constructor cannot be instantiated to expected type; found : (T1, T2) required: (Vector, Vector) val (meanVal, varianceVal) = df.select(metrics("mean", "variance").summary($"features", $"weight").as("summary")) ^导入对应的spark包Vector向量即可。
使用ml算法
import org.apache.spark.ml.linalg.Vector使用mllib算法
import org.apache.spark.mllib.linalg.Vector