Skip to content

udf()

Описание

Функция udf() создает пользовательскую функцию (UDF), которая может быть использована в PySpark. UDF позволяют применять пользовательскую логику к данным в DataFrame.

Параметры

  • f: Callable - функция Python
  • returnType: 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()