【问题标题】:Remove RDD values with condition删除带有条件的 RDD 值
【发布时间】:2021-07-09 18:35:52
【问题描述】:

我有一个这样的 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 吗? 谢谢!

【问题讨论】:

    标签: python apache-spark pyspark rdd


    【解决方案1】:

    您可以使用列表理解来执行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', [])]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-02
      • 2015-11-10
      • 1970-01-01
      • 2021-10-31
      • 2020-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多