Pyspark reduceByKey返回元组列表

时间:2017-07-12 23:30:52

标签: python apache-spark pyspark

我有一个这样的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,其值很好并且完全在他们自己的元组中?

2 个答案:

答案 0 :(得分:0)

请记住,只有一个元素的元组仍必须表示为(tuple,)所以您只需将其用作参数函数

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

答案 1 :(得分:-1)

rdd.groupByKey().mapValues(tuple)