Spark reducebykey - 最少列表元素

时间:2016-08-23 08:57:49

标签: list apache-spark reduce minimum

我在使用Spark reduceByKey / groupByKey函数时遇到了麻烦。

我有一对形式为(datetime, [a1, b1, c1, d1]), (datetime, [a2, b2, c2, d2]) ...

的RDD

我想按键对这些元素进行分组(这里的日期时间相同),并获得与元素最小值列表对应的输出值。

以我的例子为例,输出为:

(datetime, [min(a1,a2), min(b1,b2), min(c1,c2), min(d1,d2)])

我试过了:

reduceByKey(lambda (a, b): [min(x) for x in zip(a, b)])

但到目前为止没有成功。

提前致谢

1 个答案:

答案 0 :(得分:-1)

对于这个问题,我们有一个简单的解决方案。

在地图功能中,在减少之前。您应该像这样设置数据:

(datetime, ([a1, b1, c1, d1],))

请注意,我使用逗号将列表插入元组中。我正在做一个"开放"元组。因为它可以默认为reduceByKey

reduceByKey(lambda a, b: a + b)

你会得到这样的rdd:

(datetime, ([a1, b1, c1, d1], [a2, b2, c2, d2]))