我有一个这样的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,其值很好并且完全在他们自己的元组中?
答案 0 :(得分:0)
请记住,只有一个元素的元组仍必须表示为(tuple,)
所以您只需将其用作参数函数
lambda a,b: (a,) + (b,)
答案 1 :(得分:-1)
rdd.groupByKey().mapValues(tuple)