Du definierst sie? Du benutzt sie!

Einführung in PySpark

Benjamin Schmidt

Data Engineer

UDFs für wiederkehrende Aufgaben

UDF (User-Defined-Function: benutzerdefinierte Funktion): Eine individuelle Funktion, um mit Daten mithilfe von PySpark-DataFrames zu arbeiten.

Vorteile von UDFs:

  • Wiederverwendung und Wiederholung häufiger Aufgaben
  • Direkt bei Spark registriert und kann geteilt werden
  • PySpark DataFrames (für kleinere Datensätze)
  • pandas UDFs (für größere Datensätze)
Einführung in PySpark

Eine UDF definieren und registrieren

Alle PySpark-UDFs müssen über die Funktion udf() registriert werden.

# 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()

Denke daran: Mit UDFs kannst du benutzerdefinierte Python-Logik auf PySpark-DataFrames anwenden.

Einführung in PySpark

pandas UDF

  • Spart teure Konvertierungen von Code und Daten
  • Muss nicht in der SparkSession registriert sein
  • Nutzt die Funktionen von Pandas für extrem große Datensätze
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
Einführung in PySpark

PySpark UDFs im Vergleich zu pandas UDFs

PySpark UDF

  • Am besten für kleinere Datensätze
  • Einfache Umwandlungen wie Datenbereinigung
  • Änderungen passieren auf Spaltenebene, nicht auf Zeilenebene.
  • Muss mit udf() in einer Spark-Session registriert sein

pandas UDF

  • Relativ große Datensätze
  • Komplexe Operationen, die über die einfache Datenbereinigung hinausgehen
  • Spezifische Änderungen auf Zeilenebene gegenüber Spaltenebene
  • Kann außerhalb der Spark-Session aufgerufen werden
Einführung in PySpark

Lass uns üben!

Einführung in PySpark

Preparing Video For Download...