繁体   English   中英

根据 PySpark 中的值相等过滤键/值对的 RDD

[英]Filter RDD of key/value pairs based on value equality in PySpark

给定

[('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 次的单词。 预期 output

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

我尝试使用

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

但它仍然显示整个列表。 我应该如何 go 关于这个?

你的 lambda function 错了; 它应该是

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)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM