繁体   English   中英

获取Spark RDD中每个键的最大值

[英]Get the max value for each key in a Spark RDD

返回与Spark RDD中的每个唯一键关联的最大行(值)的最佳方法是什么?

我正在使用python,并且已经尝试过Math max,通过键和聚合来映射和归约。 有一种有效的方法可以做到这一点吗? 可能是UDF?

我有RDD格式:

[(v, 3),
 (v, 1),
 (v, 1),
 (w, 7),
 (w, 1),
 (x, 3),
 (y, 1),
 (y, 1),
 (y, 2),
 (y, 3)]

我需要退货:

[(v, 3),
 (w, 7),
 (x, 3),
 (y, 3)]

领带可以返回第一个值或随机值。

实际上,您有一个PairRDD。 最好的方法之一是用reduceByKey:

(斯卡拉)

val grouped = rdd.reduceByKey(math.max(_, _))

(蟒蛇)

grouped = rdd.reduceByKey(max)

(Java 7)

JavaPairRDD<String, Integer> grouped = new JavaPairRDD(rdd).reduceByKey(
    new Function2<Integer, Integer, Integer>() {
        public Integer call(Integer v1, Integer v2) {
            return Math.max(v1, v2);
    }
});

(Java 8)

JavaPairRDD<String, Integer> grouped = new JavaPairRDD(rdd).reduceByKey(
    (v1, v2) -> Math.max(v1, v2)
);

reduceByKey的API文档:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM