Как игнорировать пустой список при использовании функции pyspark `map`? - PullRequest
0 голосов
/ 08 июня 2019

Предположим, я выполняю простой скрипт pyspark data_rdd.map(some_fun).toDF(), где data_rdd содержит только последовательность записей, которые должны быть обработаны some_fun.some_fun вернет список, а иногда это пустой список.Пример выходных данных показан ниже, где вы можете увидеть пустой список.

Мой вопрос: есть ли в любом случае отфильтровать этот пустой список без использования дорогих where или filter?В любом случае, чтобы map сам игнорировал пустые списки?Спасибо!

1 Ответ

0 голосов
/ 08 июня 2019

Мы можем использовать org.apache.spark.rdd.RDD#flatMap

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

Это выполняет операцию в одной функции, но все еще дорого с точки зрения потребления памяти.
Использование filter лучше с точки зрения затрат времени и использования ресурсов, учитывая, что это происходит с помощью codegen

...