我有一个RDD作为元组对的列表: -
[((1.1, 1.2), (0.1, 0.1)),
((1.1, 1.2), (0.4, 2.1)),
((0.1, 0.1), (1.1, 1.2)),
((9.0, 9.0), (9.1, 9.1)),
((0.4, 2.1), (1.1, 1.2)),
((9.1, 9.1), (9.0, 9.0))]
如何从此RDD中删除重复的元组并获取所需的输出:
[((1.1, 1.2), (0.1, 0.1)),
((1.1, 1.2), (0.4, 2.1)),
((9.1, 9.1), (9.0, 9.0))]
我已经尝试过distinct()但没有获得所需的输出。
答案 0 :(得分:1)
您似乎想要获取不同的元组对,忽略它们出现的顺序。您的尝试rdd.distinct()
在这种情况下不起作用,因为它只删除重复的行(顺序很重要)。
您可以做的一件事是对行进行排序,以便元素对始终以相同的顺序出现,然后调用distinct()
:
rdd.map(lambda x: tuple(sorted(x))).distinct().collect()
在您的数据上,这会产生:
[((9.0, 9.0), (9.1, 9.1)),
((0.1, 0.1), (1.1, 1.2)),
((0.4, 2.1), (1.1, 1.2))]