【问题标题】:Calculations on Spark RDD without using Iterations不使用迭代的 Spark RDD 计算
【发布时间】: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


    【解决方案1】:

    您需要过滤,而不是迭代。

    可以通过

    1. 过滤(仅保留符合条件的评级)。
    2. 全部添加
    3. 除以条目数。

    【讨论】:

    • 是的。 Map 是一种仿函数,你将一些函数应用于 RDD,它就会被转换为新值。减少一般计算。
    • 仍然无法添加它们添加,您能详细说明一下吗?也许显示一些代码?谢谢。
    猜你喜欢
    • 2015-06-14
    • 1970-01-01
    • 2017-06-15
    • 2016-10-28
    • 2015-10-26
    • 2014-09-01
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    相关资源
    最近更新 更多