Plan du cours
Module 1 : Fondamentaux du Big Data et de Spark
- Aperçu de l'écosystème Big Data et du rôle de Spark dans les plateformes de données modernes
- Compréhension de l'architecture Spark : driver, exécuteurs, gestionnaire de cluster, évaluation paresseuse (lazy evaluation), 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 applicative
Module 2 : DataFrames PySpark
- Lecture et écriture de données depuis des 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 fenêtrées, le gestionnaire de timestamps et le travail avec des données imbriquées
- Application de contrôles de qualité des données et rédaction de code PySpark réutilisable et maintenable
Module 3 : Bases de Kubernetes et Docker pour les utilisateurs de Spark
- Compréhension de la relation entre les images Docker et les pods Kubernetes et les processus driver et exécuteur de Spark — une vision conceptuelle pour les consommateurs de cluster, non les administrateurs
- Compréhension de ce qui se passe lorsqu'un travail Spark s'exécute sur Kubernetes : ordonnancement des pods, demandes et limites de ressources, et comment les paramètres de session s'y rapportent
- Compréhension de ce que vous contrôlez via les paramètres de session Spark par rapport à ce que l'équipe plateforme contrôle via le provisionnement du cluster — et pourquoi cette frontière est importante pour le réglage (tuning)
- Exercice pratique : Inspecter un travail Spark-sur-Kubernetes en cours d'exécution dans le cluster sandbox et identifier les pods driver et exécuteur
Module 4 : Configuration de session Spark sur Kubernetes — Analyse approfondie
- Compréhension du nombre d'exécuteurs par rapport à la taille des exécuteurs : compromis mémoire-coeurs et comment y réfléchir
- Allocation de la mémoire du driver et des exécuteurs, surcoût de mémoire, et comment cela se traduit en ressources de pods
- Allocation dynamique : son comportement sur Kubernetes, quand elle économise les ressources et quand elle ne le fait pas
- 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 de mise à l'échelle et optimisation des coûts
- Compréhension de la manière dont l'ajout ou la suppression de nœuds modifie le comportement du travail, le temps d'achèvement et la consommation de ressources
- Comparaison de nombreux petits exécuteurs par rapport à quelques grands : compromis performances-coûts
- Comportement du shuffle et réglage des partitions de shuffle, y compris l'estimation de l'impact des choix de configuration sur les coûts
- Exercice pratique : Mettre à l'échelle 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 et partitionnement efficaces des données
- Compréhension du problème des petits fichiers : pourquoi les sources divisées en de nombreux fichiers Parquet de 1 à 5 Mo dégradent les performances et faussent le partitionnement
- Stratégies de re-partitionnement et de coalescence
- Contrôle des tailles de partitions lors de la lecture et de l'écriture
- Écriture efficace de Parquet pour éviter de recréer le problème des petits fichiers en aval
- Exercice pratique : Charger un jeu de données composé de nombreuses petites partitions Parquet, appliquer différentes stratégies de re-partitionnement et comparer les performances avant et après optimisation
Module 7 : Gestion de la mémoire Pandas et diagnostic des pannes
- Compréhension des causes racines des erreurs de dépassement de mémoire dans Pandas et reconnaissance des symptômes
- Application de motifs de conversion économes en mémoire entre Spark et Pandas
- Évitement des explosions de mémoire lors de l'écriture de grands jeux de données en CSV
- Utilisation du traitement par lots (chunking) et de l'optimisation des types de données (dtype) pour les environnements contraints
- Exercice pratique : Reproduire un scénario typique de dépassement de mémoire avec Pandas et le résoudre en utilisant le chunking et l'optimisation des dtype
Module 8 : Polars comme outil complémentaire
- Positionnement de Polars par rapport à Pandas : caractéristiques de performance, évaluation paresseuse et comportement mémoire
- Compréhension de l'endroit où Polars s'intègre avec PySpark et Pandas dans les stacks de données cloud modernes et les plans de migration, y compris les environnements AWS
- Exercice pratique : Réécrire une transformation intensive en Pandas avec 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
- Compréhension des considérations d'optimisation spécifiques aux charges de travail d'apprentissage automatique s'exécutant sur le même cluster
- Application d'un flux de travail de réglage pratique pour diagnostiquer systématiquement les problèmes de coût et de performance
- Exercice pratique : Terminer un mini-projet de bout en bout combinant le chargement de données, la transformation et une étape simple d'entraînement de modèle, les participants effectuant eux-mêmes le réglage de la configuration Spark
Pré requis
Les participants doivent disposer des compétences suivantes :
- Expérience pratique de la programmation en Python, y compris les fonctions, les modules et les concepts de base de la programmation orientée objet.
- Expérience débutante à intermédiaire dans le travail avec Pandas et les flux de traitement de données tabulaires.
- Familiarité basique avec PySpark et les 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.
- Familiarité basique avec les concepts Docker et Kubernetes, tels que les conteneurs, les images et les pods. Aucune expérience d'administration Kubernetes n'est requise.
- Compréhension basique des formats de données courants tels que CSV, JSON et Parquet.
Les participants n'ont pas besoin d'être des administrateurs Kubernetes ou des spécialistes des infrastructures. Le cours se concentre sur la manière dont les ingénieurs données, les développeurs et les scientifiques des données peuvent comprendre et optimiser leurs charges de travail Spark fonctionnant sur Kubernetes sous l'angle applicatif et de la configuration.
Public cible
Ce cours s'adresse aux professionnels qui développent, maintiennent ou optimisent des charges de travail de traitement de données et d'apprentissage automatique en utilisant Python et Spark dans des environnements cloud ou conteneurisés.
Il est particulièrement adapté à :
- Les ingénieurs données travaillant avec PySpark, le traitement de données distribué et les pipelines ETL.
- Les scientifiques des données traitant de grands jeux 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 cherchant à améliorer l'efficacité de la mémoire et les performances de traitement.
- Les ingénieurs en apprentissage automatique gérant la préparation des données et les charges de travail 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, plateforme et cloud qui prennent en charge les charges de travail Spark sur Kubernetes et qui doivent comprendre comment la configuration au niveau applicatif 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