select 来自 rdd 的元素,其中 for (x,y), (y,x) 存在于 rdd 中

select elements from rdd where for (x,y), (y,x) is present in the rdd

我有以下rdd

[('K', ' M'),
 ('K', ' H'),
 ('M', ' K'),
 ('M', ' E'),
 ('H', ' F'),
 ('B', ' T'),
 ('B', ' H'),
 ('E', ' K'),
 ('E', ' H'),
 ('F', ' K'),
 ('F', ' H'),
 ('F', ' E'),
 ('A', ' Z')]

我想过滤掉 rdd 中存在 (y,x) 的元素 (x,y)。在我的例子中,输出应该是这样的:

[(K,M),
 (H,F)]

感谢帮助

可以把每个元组排好序,统计元组数,然后过滤掉出现次数超过一次的元组:

rdd.groupBy(lambda t: (min(t), max(t)))
   .mapValues(len)
   .filter(lambda t: t[1] > 1)
   .map(lambda t: t[0])
   .collect()

# [('F', 'H'), ('K', 'M')]