在PySpark中根据值的平等性过滤键值对的RDD。

问题描述 投票:1回答:2

鉴于

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

其中,配对的RDD的值就是词频。

我只想返回出现10次的单词。预期输出

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

我试着用

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

但它仍然显示整个列表。我应该如何处理这个问题?

python apache-spark filter pyspark rdd
2个回答
3
投票

你的lambda函数是错误的,应该是

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)]
© www.soinside.com 2019 - 2024. All rights reserved.