Java 如何使用Apache spark计算平均值?

Java 如何使用Apache spark计算平均值?,java,scala,apache-spark,apache-spark-mllib,Java,Scala,Apache Spark,Apache Spark Mllib,我处理了一个双重存储列表,如下所示: JavaRDD<Double> myDoubles myDoubles.rdd().mean() 根据我的理解,这相当于 但是,它不起作用,给了我以下eror:类型RDD的方法mean()未定义。我也没有发现在文章中提到这个函数。 . 这是因为对我这边的理解不好,还是其他原因?其实很简单:mean()是为JavaDoubleRDD类定义的。我没有找到如何从JavaRDD转换到JavaDoubleRDD,但在我的情况下,这是不必要的 事实上,s

我处理了一个双重存储列表,如下所示:

JavaRDD<Double> myDoubles
myDoubles.rdd().mean()
根据我的理解,这相当于

但是,它不起作用,给了我以下eror:
类型RDD的方法mean()未定义。我也没有发现在文章中提到这个函数。

. 这是因为对我这边的理解不好,还是其他原因?

其实很简单:
mean()
是为
JavaDoubleRDD
类定义的。我没有找到如何从
JavaRDD
转换到
JavaDoubleRDD
,但在我的情况下,这是不必要的

事实上,scala中的这一行

val mean = valuesAndPreds.map{case(v, p) => (v - p)}.mean()
可以用Java表示为

double mean = valuesAndPreds.mapToDouble(tuple -> tuple._1 - tuple._2).mean();

别忘了在scala文件的顶部添加导入org.apache.spark.SparkContext.

还要确保您正在调用
RDD[Double]

上的
mean()
“它不工作”是什么意思?这就是您看到的特定错误消息吗?谢谢!斯卡拉真是疯了。
mean
方法已启用,但可在
RDD[Double]
上使用。它也在
JavaDoubleRDD
上,所以这就是您需要得到的。(我不知道Java API,所以我不能更具体,抱歉。)太好了!我宁愿把答案留给你。我甚至不知道如何测试那条线。
val mean = valuesAndPreds.map{case(v, p) => (v - p)}.mean()
double mean = valuesAndPreds.mapToDouble(tuple -> tuple._1 - tuple._2).mean();