Vue d'ensemble

PySpark 3.3, publié le 17 juin 2022, introduit les UDFs optimisées Arrow pour de meilleures performances de transfert de données.

Fonctionnalités principales

UDFs optimisées Arrow

Les UDFs Arrow utilisent Apache Arrow pour le transfert de données entre la JVM et Python, offrant des performances jusqu'à 100x supérieures.

python
from pyspark.sql import SparkSession
from pyspark.sql.functions import pandas_udf
import pandas as pd

spark = SparkSession.builder.getOrCreate()

@pandas_udf('double')
def normaliser(s: pd.Series) -> pd.Series:
    return (s - s.mean()) / s.std()

df = spark.range(1000).selectExpr('id as valeur')
df.select(normaliser('valeur')).show(5)

Améliorations Spark SQL

Spark SQL bénéficie de nouvelles optimisations de requêtes et d'un meilleur support des types complexes comme les tableaux et les structures.

python
from pyspark.sql import SparkSession
from pyspark.sql import functions as F

spark = SparkSession.builder.getOrCreate()

df = spark.createDataFrame([
    ('Alice', [90, 85, 92]),
    ('Bob', [78, 88, 95]),
], ['nom', 'notes'])

# Opérations sur tableaux
df.select(
    'nom',
    F.aggregate('notes', F.lit(0), lambda acc, x: acc + x).alias('total'),
).show()

Sources