PySpark Reduce on RDD 只有一个元素
PySpark Reduce on RDD with only single element
有没有办法处理只有一个元素的 RDD(我正在做的事情有时会发生这种情况)?在这种情况下,reduce 停止工作,因为该操作需要 2 个输入。
我正在使用键值对,例如:
(key1, 10),
(key2, 20),
我想汇总它们的值,所以结果应该是:
30
但是有些情况下rdd只包含一个键值对,所以reduce在这里不起作用,例如:
(key1, 10)
这将return什么都没有。
如果在 reduce
之前执行 .values()
,即使 RDD 中只有 1 个元素,它也应该可以工作:
from operator import add
rdd = sc.parallelize([('key1', 10),])
rdd.values().reduce(add)
# 10
有没有办法处理只有一个元素的 RDD(我正在做的事情有时会发生这种情况)?在这种情况下,reduce 停止工作,因为该操作需要 2 个输入。
我正在使用键值对,例如:
(key1, 10),
(key2, 20),
我想汇总它们的值,所以结果应该是:
30
但是有些情况下rdd只包含一个键值对,所以reduce在这里不起作用,例如:
(key1, 10)
这将return什么都没有。
如果在 reduce
之前执行 .values()
,即使 RDD 中只有 1 个元素,它也应该可以工作:
from operator import add
rdd = sc.parallelize([('key1', 10),])
rdd.values().reduce(add)
# 10