PySpark à grande échelle

Introduction à PySpark

Benjamin Schmidt

Data Engineer

Exploiter l'échelle

  • PySpark fonctionne efficacement avec des gigaoctets et des téraoctets de données
  • Avec PySpark, l'objectif est la rapidité et l'efficacité
  • Comprendre l'exécution de PySpark améliore encore l'efficacité
  • Utilisez la diffusion pour gérer tout le cluster
joined_df = large_df.join(broadcast(small_df), 
                          on="key_column", how="inner")
joined_df.show()
Introduction à PySpark

Plans d'exécution

# Utilisation de explain() pour voir le plan d'exécution
df.filter(df.Age > 40).select("Name").explain()
== Plan physique ==
*(1) Filtre (isnotnull(Age) AND (Age > 30))
+- Scan ExistingRDD[Name:String, Age:Int]
1 https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.explain.html
Introduction à PySpark

Mise en cache et persistance des DataFrames

  • Mise en cache : Stocke les données en mémoire pour un accès plus rapide aux petits ensembles de données
  • Persistance : Stocke les données à différents niveaux pour les grands ensembles
df = spark.read.csv("large_dataset.csv", header=True, inferSchema=True)

# Mettre en cache le DataFrame
df.cache()

# Effectuer plusieurs opérations sur le DataFrame mis en cache df.filter(df["column1"] > 50).show() df.groupBy("column2").count().show()
Introduction à PySpark

Persistance des DataFrames à différents niveaux

# Persister le DataFrame avec un niveau de stockage
from pyspark import StorageLevel

df.persist(StorageLevel.MEMORY_AND_DISK)

# Effectuer des transformations result = df.groupBy("column3").agg({"column4": "sum"}) result.show() # Dépersister après utilisation df.unpersist()
Introduction à PySpark

Optimisation de PySpark

  • Petites sous-sections : Plus il y a de données, plus l'opération est lente : Préférez des outils comme map() à groupby() pour leur sélectivité
  • Joins en diffusion : La diffusion utilise toute la capacité de calcul, même pour de petits ensembles de données
  • Évitez les actions répétées : Les actions répétées sur les mêmes données coûtent du temps et des ressources sans avantage
Introduction à PySpark

Passons à la pratique !

Introduction à PySpark

Preparing Video For Download...