【问题标题】:PySpark Reduce on RDD with only single element仅使用单个元素的 RDD 上的 PySpark Reduce
【发布时间】:2021-07-07 00:09:02
【问题描述】:

有没有办法只用一个元素来处理 RDD(这有时会发生在我正在做的事情上)?在这种情况下,reduce 将停止工作,因为该操作需要 2 个输入。

我正在使用键值对,例如:

(key1, 10),
(key2, 20),

我想汇总它们的值,所以结果应该是:

30

但也有rdd只包含单个键值对的情况,所以reduce在这里不起作用,例如:

(key1, 10)

这不会返回任何内容。

【问题讨论】:

    标签: apache-spark pyspark rdd reduce


    【解决方案1】:

    如果您在执行reduce 之前执行.values(),即使RDD 中只有1 个元素,它也应该可以工作:

    from operator import add
    
    rdd = sc.parallelize([('key1', 10),])
    
    rdd.values().reduce(add)
    # 10
    

    【讨论】:

    • 我的方法有问题
    • 现在我使用.values().fold(0, lambda x,y: x+y) 并且似乎解决了这个问题。非常感谢,朋友。
    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多