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

标签 python apache-spark pyspark 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(_, _))

( 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)
);

reduceByKey 的 API 文档:

关于python - 获取 Spark RDD 中每个键的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37016427/

相关文章:

apache-spark - 将 apache-spark 登录发送到 Amazon EMR 集群上的 redis/logstash 的最佳方式

apache-spark - PySpark 结构化流 : Pass output of Query to API endpoint

python - Pyspark 从数据框中的列中删除空值

apache-spark - 将展开内存传输到存储内存失败

python - 使用 groupby/aggregate 返回多列

python - 总结当前行与上一行的差异

python - 根据列(字符串)对 pandas 中的 CSV 进行排序

pyspark - 在Azure函数中调用Databricks Python笔记本

python - 如何使用 Spark 函数 PySpark 将字符串转换为列表

python - 通过 Docker 运行 Flask 和 SQLAlchemy 应用程序的问题