← retour aux snippets

PySpark UDF: appliquer une fonction Python

créer un UDF scalaire et l'appliquer à une colonne

python spark #pyspark#udf#functions

PySpark UDF: appliquer une fonction Python

objectif

Expliquer et montrer comment créer un UDF scalaire et l’appliquer à une colonne.

code minimal

from pyspark.sql import functions as F, types as T

@F.udf(returnType=T.IntegerType())
def safe_len(s):
    if s is None:
        return 0
    return len(s)

df2 = df.withColumn("name_len", safe_len(F.col("name")))

utilisation

# préférer les fonctions natives quand possible (F.length) pour performance

variante(s) utile(s)

# Pandas UDF (vectorisé) souvent beaucoup plus rapide
from pyspark.sql.functions import pandas_udf, PandasUDFType

@pandas_udf("double", PandasUDFType.SCALAR)
def zscore(col):
    import pandas as pd
    return (col - col.mean()) / col.std(ddof=0)

notes

  • Les UDF Python cassent la vectorisation JVM -> privilégier functions natives.
  • Pandas UDF requiert Arrow activé.