我似乎无法在forEach上找到太多文档。我有一个键/值配对的数据集。我期待做(伪代码):
forEach key,求和值 forEach key,最大值 等。
答案 0 :(得分:2)
This can be done e.g. with reduceByKey
rdd = sc.parallelize([("foo", 1), ("foo", 2), ("bar", 3)])
rdd.reduceByKey(lambda x, y : x + y).collect() # Sum for each key
# Gives [('foo', 3), ('bar', 3)]
x.reduceByKey(max).collect() # Max for each key
# Gives [('foo', 2), ('bar', 3)]
答案 1 :(得分:2)
foreach(func)对数据集的每个元素运行函数func。这个 通常用于副作用,例如更新累加器 变量(见下文)或与外部存储系统交互。
请注意突出显示的"副作用"。 foreach是RDD上的一个操作,它对RDD中的每个元素执行函数,但不向驱动程序返回任何内容。您可以将函数传递给它,例如println或增加累加器变量或保存到外部存储器。
在您的使用案例中,您应该使用 reduceByKey 。