【发布时间】:2015-06-25 10:23:29
【问题描述】:
我似乎在 forEach 上找不到太多文档。我有一个键/值配对的数据集。我正在寻找类似(伪代码)的东西:
对于每个键,对值求和 forEach 键,最大值 等等。
【问题讨论】:
标签: python apache-spark pyspark
我似乎在 forEach 上找不到太多文档。我有一个键/值配对的数据集。我正在寻找类似(伪代码)的东西:
对于每个键,对值求和 forEach 键,最大值 等等。
【问题讨论】:
标签: python apache-spark pyspark
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)]
【讨论】:
foreach(func) 对数据集的每个元素运行一个函数 func。这 通常用于副作用,例如更新累加器 变量(见下文)或与外部存储系统交互。
请注意突出显示的“副作用”。 foreach 是 RDD 上的一个动作,它对 RDD 中的每个元素执行功能,但不向驱动程序返回任何内容。您可以将函数传递给它,例如 println 或增加累加器变量或保存到外部存储。
在您的用例中,您应该使用 reduceByKey。
【讨论】: