Как работает udf (пользовательская функция) в pyspark? - PullRequest
0 голосов
/ 26 ноября 2018

Я хочу понять работу udf в pyspark.Открывается ли оболочка Python каждый раз, когда мы используем udf поверх фрейма данных?

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

UDF может быть передано PySpark двумя способами.

  1. UDF может быть определен в Scala и запущен с использованием PySpark
  2. UDF может быть определен в Python и запущен PySpark

В первом случае UDF будет работать как часть самой JVM Executor, поскольку сам UDF определен в Scala.Нет необходимости создавать процесс Python.

Во втором случае для каждого исполнителя будет запущен процесс Python.данные будут сериализованы и десериализованы между исполнителем и python для обработки.Это приводит к значительному снижению производительности и накладным расходам при работе с искрой.

обычно предпочтительнее использовать UDF на основе Scala, так как они обеспечат вам лучшую производительность.

в spark 2.x Существуетчто-то под названием Pandas Udf (векторизованный UDF).Они реализованы с использованием Pandas (Преобразование Dataframe с помощью стрелки Apache).По сути, вы пишете код на python, но этот код преобразуется и запускается с использованием панд.что значительно улучшает производительность UDF в python.Надеюсь, это поможет.

0 голосов
/ 26 ноября 2018

Spark запускает процесс python параллельно каждому исполнителю и передает данные назад и вперед между частью Scala (исполнителем) и python.

Это имеет большое значение для производительности и потребления памяти (а также для управленияих, когда вы настраиваете искру работу)

...