pySpark forEach函数在一个键上

时间:2015-04-18 13:58:21

标签: python apache-spark pyspark

我似乎无法在forEach上找到太多文档。我有一个键/值配对的数据集。我期待做(伪代码):

forEach key,求和值 forEach key,最大值 等。

2 个答案:

答案 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)

请查看Spark Programming Guide

  

foreach(func)对数据集的每个元素运行函数func。这个   通常用于副作用,例如更新累加器   变量(见下文)或与外部存储系统交互。

请注意突出显示的"副作用"。 foreach是RDD上的一个操作,它对RDD中的每个元素执行函数,但不向驱动程序返回任何内容。您可以将函数传递给它,例如println或增加累加器变量或保存到外部存储器。

在您的使用案例中,您应该使用 reduceByKey