Plan du cours
Module 1 : Fondamentaux du Big Data et de Spark
- Aperçu de l’écosystème du Big Data et du rôle de Spark dans les plateformes de données modernes
- Comprendre l’architecture Spark : driver, exécuteurs, gestionnaire de cluster, évaluation paresseuse, DAG et planification d’exécution
- Différences entre les API RDD et DataFrame et quand utiliser chaque approche
- Création et configuration de SparkSession et compréhension des fondamentaux de la configuration de l’application
Module 2 : DataFrames PySpark
- Lecture et écriture de données à partir de sources et formats d’entreprise : CSV, JSON, Parquet et Delta
- Travail avec les DataFrames PySpark : transformations, actions, expressions de colonnes, filtrage, jointures et agrégations
- Mise en œuvre d’opérations avancées telles que les fonctions de fenêtre, la gestion des horodatages et le travail avec des données imbriquées
- Application de contrôles de qualité des données et écriture de code PySpark réutilisable et maintenable
Module 3 : Fondamentaux de Kubernetes et Docker pour les utilisateurs de Spark
- Comprendre comment les images Docker et les pods Kubernetes sont liés aux processus de driver et d’exécuteur Spark — une vue conceptuelle pour les utilisateurs du cluster, et non pour les administrateurs
- Comprendre ce qui se passe lorsqu’un travail Spark est exécuté sur Kubernetes : planification des pods, demandes et limites de ressources, et comment les paramètres de session s’y rapportent
- Comprendre ce que vous contrôlez via les paramètres de session Spark par rapport à ce que l’équipe plateforme contrôle via le provisioning du cluster — et pourquoi cette frontière est importante pour l’ajustement
- Exercice pratique : Inspecter un travail Spark-on-Kubernetes en cours d’exécution dans le cluster sandbox et identifier les pods driver et exécuteurs
Module 4 : Configuration de session Spark sur Kubernetes — Approfondissement
- Comprendre le nombre d’exécuteurs par rapport à la taille des exécuteurs : compromis entre mémoire et cœurs, et comment raisonner à leur sujet
- Allocation de la mémoire du driver et des exécuteurs, mémoire supplémentaire (overhead), et comment cela se traduit en ressources de pod
- Allocation dynamique : comment elle se comporte sur Kubernetes, quand elle économise des ressources et quand ce n’est pas le cas
- Exercice pratique : Exécuter le même travail avec différentes configurations d’exécuteurs et de cœurs et comparer le temps d’exécution et l’utilisation des ressources
Module 5 : Comportement à l’échelle et optimisation des coûts
- Comprendre comment l’ajout ou la suppression de nœuds modifie le comportement du travail, le temps d’achèvement et la consommation de ressources
- Comparer de nombreux petits exécuteurs à quelques grands : compromis entre performances et coûts
- Comportement du shuffle et réglage des partitions de shuffle, y compris l’estimation de l’impact en termes de coûts des choix de configuration
- Exercice pratique : Passer le cluster sandbox de cinq à dix nœuds et observer l’effet sur le temps d’achèvement du travail et la consommation de ressources
Module 6 : Ingestion efficace des données et partitionnement
- Comprendre le problème des petits fichiers : pourquoi les sources réparties sur de nombreux fichiers Parquet de 1 à 5 Mo dégradent les performances et déforment le partitionnement
- Stratégies de repartitionnement et de coalescence
- Contrôle des tailles de partition à la lecture et à l’écriture
- Écriture efficace de Parquet pour éviter de recréer le problème des petits fichiers en aval
- Exercice pratique : Charger un ensemble de données composé de nombreuses petites partitions Parquet, appliquer différentes stratégies de repartitionnement et comparer les performances avant et après optimisation
Module 7 : Gestion de la mémoire dans Pandas et diagnostic des pannes
- Comprendre les causes racines des erreurs de mémoire insuffisante (out-of-memory) dans Pandas et reconnaître les symptômes
- Application de modèles de conversion économiseurs de mémoire entre Spark et Pandas
- Éviter les surcharges de mémoire lors de l’écriture de grands ensembles de données dans des fichiers CSV
- Utilisation du traitement par blocs (chunking) et de l’optimisation des types de données (dtype) pour les environnements contraints
- Exercice pratique : Reproduire un scénario typique de mémoire insuffisante dans Pandas et le résoudre à l’aide du traitement par blocs et de l’optimisation des types de données
Module 8 : Polars comme outil complémentaire
- Positionnement de Polars par rapport à Pandas : caractéristiques de performance, évaluation paresseuse et comportement de la mémoire
- Comprendre où Polars s’insère aux côtés de PySpark et Pandas dans les piles de données cloud modernes et les roadmaps de migration, y compris les environnements AWS
- Exercice pratique : Réécrire une transformation lourde en Pandas en Polars et comparer l’utilisation de la mémoire et la vitesse de traitement
Module 9 : Application de l’optimisation aux charges de travail ETL et ML
- Application des principes de configuration, de partitionnement et de gestion de la mémoire à un pipeline ETL réaliste
- Comprendre les considérations d’optimisation spécifiques aux charges de travail d’apprentissage automatique exécutées sur le même cluster
- Application d’un processus d’ajustement pratique pour diagnostiquer systématiquement les problèmes de coût et de performances
- Exercice pratique : Finaliser un mini-projet de bout en bout combinant le chargement des données, la transformation et une étape simple d’entraînement de modèle, avec les participants ajustant eux-mêmes la configuration de Spark
Pré requis
Les participants doivent disposer des compétences suivantes :
- Expérience pratique de la programmation Python, y compris les fonctions, les modules et les concepts de base de la programmation orientée objet.
- Expérience de base à intermédiaire dans le travail avec Pandas et les flux de traitement de données tabulaires.
- Notions de base de PySpark et des DataFrames Spark, y compris la lecture de données, les transformations, les actions, les jointures et les agrégations.
- Compréhension générale des concepts SQL et de traitement de données, y compris le filtrage, le regroupement et la jointure de jeux de données.
- Notions de base des concepts Docker et Kubernetes, tels que les conteneurs, les images et les pods. Aucune expérience en administration Kubernetes n’est requise.
- Compréhension de base des formats de données courants tels que CSV, JSON et Parquet.
Les participants n’ont pas besoin d’être administrateurs Kubernetes ou spécialistes de l’infrastructure. Le cours se concentre sur la manière dont les ingénieurs de données, les développeurs et les scientifiques de données peuvent comprendre et optimiser leurs charges de travail Spark exécutées sur Kubernetes du point de vue de l’application et de la configuration.
Public cible
Ce cours est conçu pour les professionnels qui développent, maintiennent ou optimisent des charges de travail de traitement de données et d’apprentissage automatique à l’aide de Python et Spark dans des environnements cloud ou conteneurisés.
Il est particulièrement adapté à :
- Les Ingénieurs de données travaillant avec PySpark, le traitement de données distribué et les pipelines ETL.
- Les Scientifiques de données traitant de grands ensembles de données ou exécutant des charges de travail d’apprentissage automatique avec Spark, Pandas ou Polars.
- Les Développeurs Python travaillant sur des applications intensives en données et souhaitant améliorer l’efficacité de la mémoire et les performances de traitement.
- Les Ingénieurs en apprentissage automatique gérant des charges de travail de préparation des données et d’entraînement de modèles sur des environnements Kubernetes ou cloud partagés.
- Les Ingénieurs analytiques travaillant avec de grands jeux de données et cherchant à améliorer l’efficacité du traitement des données.
- Les Ingénieurs DevOps, Platform et Cloud qui prennent en charge les charges de travail Spark sur Kubernetes et qui doivent comprendre comment la configuration au niveau de l’application affecte l’utilisation des ressources et les performances.
- Les Responsables techniques et Architectes de solutions impliqués dans la conception ou l’optimisation de plateformes modernes de traitement de données.
Nos clients témoignent (1)
J'ai aimé qu'il soit pratique. J'ai adoré appliquer les connaissances théoriques avec des exemples pratiques.
Aurelia-Adriana - Allianz Services Romania
Formation - Python and Spark for Big Data (PySpark)
Traduction automatique