首页 > 解决方案 > 在 Pypsark 中如何在 RDD 中获取不同的值

问题描述

在低于 RDD 我想获得不同的值

  rdd = sc.parallelize([('id1',['12','12','87']),('id2',['15','17']), 
  ('id3',['20','23','23']),('id4',['20','23','24','26','26','26'])])

下面的数据集

[('id1', ['12', '12', '87']),
 ('id2', ['15', '17']),
 ('id3', ['20', '23', '23']),
 ('id4', ['20', '23', '24', '26', '26', '26'])]

下面的期望结果

[('id1', ['12','87']),
 ('id2', ['15', '17']),
 ('id3', ['20', '23']),
 ('id4', ['20', '23', '24', '26'])]

这是我得到的,但它不起作用,请帮忙。

 rdd.flatMap(lambda x: x).keys().distinct()

我怎样才能实现代码来实现这一点?谢谢你。

标签: apache-sparkpysparkrdd

解决方案


rdd.mapValues(lambda x: set(x)).take(10)

[
('id1', set(['12', '87'])), 
('id2', set(['15', '17'])), 
('id3', set(['20', '23'])), 
('id4', set(['24', '26', '20', '23']))
]


推荐阅读