Определяй и применяй!

Введение в PySpark

Benjamin Schmidt

Data Engineer

UDF для повторяющихся задач

UDF (User-Defined Function): пользовательская функция для работы с данными в PySpark DataFrames

Преимущества UDF:

  • Повторное использование типовых операций
  • Регистрируются в Spark и могут быть общими
  • PySpark DataFrames (для небольших наборов данных)
  • pandas UDF (для больших наборов данных)
Введение в PySpark

Определение и регистрация UDF

Все UDF в PySpark необходимо регистрировать с помощью функции udf().

# Define the function
def to_uppercase(s):
    return s.upper() if s else None

# Register the function to_uppercase_udf = udf(to_uppercase, StringType())
# Apply the UDF to the DataFrame df = df.withColumn("name_upper", to_uppercase_udf(df["name"]))
# See the results df.show()

Запомните: UDF позволяют применять пользовательскую логику Python к PySpark DataFrames

Введение в PySpark

pandas UDF

  • Устраняет затратные преобразования кода и данных
  • Не требует регистрации в SparkSession
  • Использует возможности pandas на очень больших наборах данных
from pyspark.sql.functions import pandas_udf

@pandas_udf("float")
def fahrenheit_to_celsius_pandas(temp_f):
    return (temp_f - 32) * 5.0/9.0
Введение в PySpark

PySpark UDF vs. pandas UDF

PySpark UDF

  • Подходит для относительно небольших наборов данных
  • Простые преобразования, например очистка данных
  • Изменения на уровне столбцов, а не строк
  • Требует регистрации в Spark Session с помощью udf()

pandas UDF

  • Относительно большие наборы данных
  • Сложные операции, выходящие за рамки простой очистки данных
  • Изменения на уровне строк, а не столбцов
  • Может вызываться за пределами Spark Session
Введение в PySpark

Давайте потренируемся!

Введение в PySpark

Preparing Video For Download...