Lo definisci? Lo usi!

Introduzione a PySpark

Benjamin Schmidt

Data Engineer

UDF per compiti ripetibili

UDF (User-Defined Function): funzione personalizzata per lavorare con i dati usando i dataframe PySpark

Vantaggi delle UDF:

  • Riutilizzo e ripetizione di compiti comuni
  • Registrate direttamente con Spark e condivisibili
  • DataFrame PySpark (per dataset più piccoli)
  • pandas UDF (per dataset più grandi)
Introduzione a PySpark

Definire e registrare una UDF

Tutte le UDF PySpark devono essere registrate tramite la funzione udf().

# Definisci la funzione
def to_uppercase(s):
    return s.upper() if s else None

# Registra la funzione to_uppercase_udf = udf(to_uppercase, StringType())
# Applica la UDF al DataFrame df = df.withColumn("name_upper", to_uppercase_udf(df["name"]))
# Visualizza i risultati df.show()

Ricorda: le UDF ti permettono di applicare logica Python personalizzata sui DataFrame PySpark

Introduzione a PySpark

pandas UDF

  • Elimina conversioni costose di codice e dati
  • Non necessita di registrazione alla SparkSession
  • Usa le capacità di pandas su dataset estremamente grandi
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
Introduzione a PySpark

PySpark UDF vs. pandas UDF

PySpark UDF

  • Ideale per dataset relativamente piccoli
  • Trasformazioni semplici come la pulizia dei dati
  • Modifiche a livello di colonna, non di riga
  • Deve essere registrata a una Spark Session con udf()

pandas UDF

  • Dataset relativamente grandi
  • Operazioni complesse oltre la semplice pulizia dei dati
  • Modifiche specifiche a livello di riga anziché di colonna
  • Può essere chiamata fuori dalla Spark Session
Introduzione a PySpark

Facciamo pratica!

Introduzione a PySpark

Preparing Video For Download...