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/53328704/

相关文章:

javascript - python selenium 检查 javascript 警报/弹出窗口是否打开

java - Apache Spark 简单连接导致神秘错误

python-3.x - 使用 Pyspark 检查 hive Metastore 中是否存在表

python - PySpark 根据列名称/字符串条件删除列

python - 如何创建一个按钮来选择所有复选按钮

python - 使用变量/维度过滤时,使用 Google Core Reporting API 和 bigquery 进行的用户计数不正确且不一致

python - Redis 使用的 RAM 不足

scala - 捕获在 Spark 中的 map 函数上抛出的异常

apache-spark - TigerGraph - 通过 Spark 将数据加载到用户定义的元组

python - 使用 pySpark 计算月末差异