【问题标题】:How to ignore empty list when using pyspark `map` function?使用 pyspark `map` 函数时如何忽略空列表?
【发布时间】:2019-06-08 05:16:26
【问题描述】:

假设我正在执行一个简单的 pyspark 脚本data_rdd.map(some_fun).toDF(),其中data_rdd 仅包含要由some_fun 处理的记录序列。 some_fun 会返回一个列表,有时它是一个空列表。下面显示了一个示例输出,您可以在其中看到空列表。

我的问题是,有没有办法在不使用昂贵的wherefilter 的情况下过滤掉这些空列表?无论如何让map 本身忽略空列表?谢谢!

【问题讨论】:

    标签: apache-spark pyspark rdd


    【解决方案1】:

    我们可以使用org.apache.spark.rdd.RDD#flatMap

    data_rdd.flatMap(x => {
      val res = some_fun(x)
      if (res.nonEmpty) Seq(res) else Seq.empty
    })
    

    这在一个函数中执行操作,但在内存消耗方面仍然很昂贵。
    考虑到它是通过 codegen 发生的,使用 filter 在所花费的时间和资源利用率方面更好

    【讨论】:

      猜你喜欢
      • 2015-09-15
      • 2013-08-31
      • 2022-01-14
      • 1970-01-01
      • 2010-12-05
      • 1970-01-01
      • 2020-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多