gpt4 book ai didi

python - PySpark reduceByKey 只用一个键

转载 作者:太空宇宙 更新时间:2023-11-04 07:53:28 26 4
gpt4 key购买 nike

我有一个这样的rdd

// Structure List[Tuple(x1, x2, value), Tuple(x1, x2, value)]
data = [('23', '98', 34), ('23', '89', 39), ('23', '12', 30), ('24', '12', 34), ('24', '14', 37), ('24', '16', 30)]

我正在寻找最终结果,即 x1 的得分最大值和与之关联的 x2 值。像这样

data = [('23', '89', 39), ('24', '14', 37)]

我试过 reduceByKey 但它给了我每个组合的最大值,这不是我想要的。

来自 comment :

这是我尝试过的:

max_by_group = (
data.map(lambda x: (x[0], x))
.reduceByKey(lambda x1, x2: max(x1, x2, key=lambda x: x[-1]))
.values()
)

最佳答案

groupBy 第一个元素,然后通过元组中的第三个元素找到每个组的最大值:

(rdd.groupBy(lambda x: x[0])
.mapValues(lambda x: max(x, key=lambda y: y[2]))
.values()
).collect()
# [('24', '14', 37), ('23', '89', 39)]

或者使用reduceByKey:

(rdd.map(lambda x: (x[0], x))
.reduceByKey(lambda x, y: x if x[2] > y[2] else y)
.values()
).collect()
# [('24', '14', 37), ('23', '89', 39)]

关于python - PySpark reduceByKey 只用一个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51987725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com