Skip to main content
 首页 » 编程设计

python之Pyspark reduceByKey 返回元组列表

2025年05月04日63tuyile006

我有一个像这样的 rdd:

rdd = [((uid1), (product1, price1, date1)), 
       ((uid1), (product2, price2, date2))] 

我希望输出看起来像这样:

reduced_rdd = [((uid1), ((product1, price1, date1), (product2, price2, date2)))] 

所以我尝试做类似的事情:

reduced_rdd = rdd.reduceByKey(lambda a,b: a+b) 

但是输出不是我想要的:

reduced_rdd = [((uid1), (product1, price1, date1, product2, price2, date2))] 

因为当我使用 + 运算符时这些元组连接在一起,如果我尝试将它们附加到列表中,我会得到一个丑陋的嵌套列表。 我怎样才能得到一个很好的简化 rdd,其中的值很好并且在它们自己的元组中相当?

请您参考如下方法:

请记住,只有一个元素的元组仍必须表示为 (tuple,) 因此您所要做的就是将其用作参数函数

lambda a,b: (a,) + (b,)