问题:java版 使用spark机器学习包进行求平均数遇到: java.lang.Double cannot be cast to org.apache.spark.mllib.linalg.Vector
//读取数据
Dataset<Row> jdbcDF = spark.read()
.option("url",url)
.option("dbtable", table_name)
.option("driver", "com.mysql.jdbc.Driver")
.option("user",user)
.option("password", password)
.format("jdbc")
.load();
JavaRDD<Vector> vectorJavaRDD = jdbcDF.toJavaRDD().mapPartitions(new FlatMapFunction<Iterator<Row>, Vector>() {
public Iterator<Vector> call(Iterator<Row> iterator) throws Exception {
List<Vector> results = new ArrayList<Vector>();
while (iterator.hasNext()) {
Row row = iterator.next();
Vector vector = (Vector) row.getAs("temperature1");
results.add(new org.apache.spark.mllib.linalg.DenseVector(vector.toArray()));
}
return results.iterator();
}
});
// summary
MultivariateStatisticalSummary summary = Statistics.colStats(vectorJavaRDD.rdd());
Vector max = summary.max();
System.out.println("max: "+ Arrays.toString(max.toArray()));
System.out.println("min: "+Arrays.toString(summary.min().toArray()));
System.out.println("count:" +summary.count());
System.out.println("mean: "+Arrays.toString(summary.mean().toArray()));
问题是这行运行报错: Vector vector = (Vector) row.getAs("temperature1");
运行报错:java.lang.Double cannot be cast to org.apache.spark.mllib.linalg.Vector