UDF — пользовательская функция в выражениях; Python UDF особенно дороги (сериализация, нет полной оптимизации Catalyst, иногда GIL). Предпочтительны встроенные функции Spark.
Разбор
- Pandas UDF (vectorized) быстрее классических Python UDF.
- Scala/Java UDF лучше Python black-box, но всё же хуже native expr.
- Ошибки типов в UDF ломают job неочевидно.
- Сначала ищите функцию в
pyspark.sql.functions.
Итог
UDF — крайний случай; native expressions/Pandas UDF предпочтительнее.