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')]
我有以下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')]