Фильтр RDD пар ключ / значение на основе равенства значений в PySpark - PullRequest
0 голосов
/ 25 апреля 2020

Учитывая

[('Project', 10),
 ("Alice's", 11),
 ('in', 401),
 ('Wonderland,', 3),
 ('Lewis', 10),
 ('Carroll', 4),
 ('', 2238),
 ('is', 10),
 ('use', 24),
 ('of', 596),
 ('anyone', 4),
 ('anywhere', 3),

, в котором значением парного СДР является частота слова.

Я хотел бы только вернуть слова, которые появляются 10 раз. Ожидаемый результат

 [('Project', 10),
   ('Lewis', 10),
   ('is', 10)]

Я пытался использовать

rdd.filter(lambda words: (words,10)).collect()

Но он по-прежнему показывает весь список. Как мне go об этом?

Ответы [ 2 ]

3 голосов
/ 25 апреля 2020

Ваша лямбда-функция неверна; Это должно быть

rdd.filter(lambda words: words[1] == 10).collect()

Например,

my_rdd = sc.parallelize([('Project', 10), ("Alice's", 11), ('in', 401), ('Wonderland,', 3), ('Lewis', 10)], ('is', 10)]

>>> my_rdd.filter(lambda w: w[1] == 10).collect()
[('Project', 10), ('Lewis', 10), ('is', 10)]
0 голосов
/ 25 апреля 2020

Возможно, вы захотите использовать

rdd.filter(lambda x: x[1]==10).collect()

Надеюсь, это поможет!

...