删除带条件的 RDD 值
Remove RDD values with condition
我有这样一个 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 吗?
谢谢!
您可以 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', [])]
我有这样一个 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 吗? 谢谢!
您可以 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', [])]