【发布时间】:2016-10-22 02:16:54
【问题描述】:
我正在尝试实现 MAP(平均平均精度),到目前为止一切正常,但是我已经到了需要对 RDD 进行计算的阶段。 (不使用迭代,rdd.collect() 不是一个选项)
这是最终生成的 RDD(实际和预测评级以及指数),我想在上面进行计算:
JavaPairRDD<Tuple2<Double, Double>, Long> actualAndPredictedSorted = actual.join(predictions).mapToPair(
new PairFunction<Tuple2<Tuple2<Integer,Integer>,Tuple2<Double,Double>>, Double, Double>() {
public Tuple2<Double,Double> call(Tuple2<Tuple2<Integer,Integer>,Tuple2<Double,Double>> t) {
return new Tuple2 < Double, Double > (t._2._2, t._2._1);
}
}).sortByKey(false).zipWithIndex();
您还可以在下面找到一张图片,说明如何完成计算。 例如,如果用户在 rdd 中的实际评分高于 3/5,则会计算一个条目(绿色视为命中)
希望我自己解释一下!
【问题讨论】:
标签: java apache-spark mapreduce tuples