获取 Spark RDD 中每个键的最大值
Get the max value for each key in a Spark RDD
return 与 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)]
我需要 return:
[(v, 3),
(w, 7),
(x, 3),
(y, 3)]
关系可以return第一个值或随机。
实际上你有一个 PairRDD。最好的方法之一是使用 reduceByKey:
(斯卡拉)
val grouped = rdd.reduceByKey(math.max(_, _))
(Python)
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)
);
API reduceByKey 文档:
return 与 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)]
我需要 return:
[(v, 3),
(w, 7),
(x, 3),
(y, 3)]
关系可以return第一个值或随机。
实际上你有一个 PairRDD。最好的方法之一是使用 reduceByKey:
(斯卡拉)
val grouped = rdd.reduceByKey(math.max(_, _))
(Python)
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)
);
API reduceByKey 文档: