使用条件移除rdd值

ljo96ir5  于 2021-07-14  发布在  Spark
关注(0)|答案(1)|浏览(264)

我有这样一个rdd:

[ (Person 1, [Cat, Dog, Cow]), (Person 2, [Cat]), (Person 3,[Cow, Chicken])]

我有一份常见动物的名单:

freq_animals=[Cat, Dog]

我想在我的rdd中删除不在常见动物列表中的每个人的值,即输出为:

[ (Person 1, [Cat, Dog]), (Person 2, [Cat]), (Person 3,[])]

你知道我该怎么改变我的rdd吗?谢谢您!

jljoyd4f

jljoyd4f1#

你能做到的 mapValues 使用列表理解:

rdd = sc.parallelize([("Person 1", ["Cat", "Dog", "Cow"]), ("Person 2", ["Cat"]), ("Person 3", ["Cow", "Chicken"])])

freq_animals = ["Cat", "Dog"]

rdd2 = rdd.mapValues(lambda v: [i for i in v if i in freq_animals])

print(rdd2.collect())

# [('Person 1', ['Cat', 'Dog']), ('Person 2', ['Cat']), ('Person 3', [])]

相关问题