udf()
Описание
Функция udf()
создает пользовательскую функцию (UDF), которая может быть использована в PySpark. UDF позволяют применять пользовательскую логику к данным в DataFrame.
Параметры
f
: Callable - функция PythonreturnType
: DataType - тип возвращаемого значения
Возвращаемое значение
Column - результат применения UDF
Пример использования
from pyspark.sql import SparkSession
from pyspark.sql.functions import udf, col
from pyspark.sql.types import StringType
# Создаем SparkSession
spark = SparkSession.builder.appName("udf_example").getOrCreate()
# Создаем UDF для преобразования строки в верхний регистр
def to_upper(s):
return s.upper() if s else None
upper_udf = udf(to_upper, StringType())
# Создаем DataFrame
data = [
(1, "hello"),
(2, "world"),
(3, "pyspark")
]
df = spark.createDataFrame(data, ["id", "text"])
# Применяем UDF
result = df.select(
"id",
"text",
upper_udf(col("text")).alias("upper_text")
).show()
# Результат:
# +---+-------+----------+
# | id| text|upper_text|
# +---+-------+----------+
# | 1| hello| HELLO|
# | 2| world| WORLD|
# | 3|pyspark| PYSPARK|
# +---+-------+----------+
Примечания
- UDF работают с отдельными значениями, что может быть менее эффективно, чем встроенные функции
- Для лучшей производительности рекомендуется использовать встроенные функции PySpark
- Для работы с пакетами данных используйте
pandas_udf()
- Для вызова UDF используйте
call_udf()
- Для создания табличных функций используйте
udtf()