我正在尝试实现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
,则会计算一个条目(绿色视为命中)我希望自己解释一下!
答案 0 :(得分:0)
您需要过滤,而不是迭代。
可以通过
来实现