Plan du cours
Module 1 : Bases des grandes données et de Spark
- Aperçu de l’écosystème des grandes données et rôle de Spark dans les plates-formes de données modernes
- Compréhension de 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 bases de la configuration applicative
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 fenêtrées, le traitement des horodatages 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 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 vue conceptuelle pour les consommateurs de cluster, non pour les administrateurs
- Compréhension de ce qui se passe lorsqu’un job Spark s’exécute sur Kubernetes : ordonnancement des pods, demandes et limites de ressources, et comment les paramètres de session s’y appliquent
- Compréhension de ce que vous contrôlez à travers 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 job Spark sur Kubernetes en cours d’exécution dans le cluster bac à sable et identifier les pods driver et exécuteur
Module 4 : Configuration de session Spark sur Kubernetes — Approfondissement
- Compréhension du nombre d’exécuteurs par rapport à leur taille : compromis entre mémoire et cœurs et comment y réfléchir
- Allocation mémoire du driver et des exécuteurs, surcoût mémoire, et comment cela se traduit en ressources de pod
- Allocation dynamique : comment elle se comporte sur Kubernetes, quand elle économise des ressources et quand elle ne le fait pas
- Exercice pratique : Exécuter le même job 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
- Compréhension de la manière dont l’ajout ou le retrait de nœuds modifie le comportement du job, le temps d’achèvement et la consommation des ressources
- Comparaison entre de nombreux petits exécuteurs et un plus petit nombre de grands : compromis entre performance et coût
- Comportement du shuffling et ajustement des partitions de shuffle, y compris l’estimation de l’impact sur les coûts des choix de configuration
- Exercice pratique : Passer le cluster bac à sable de cinq à dix nœuds et observer l’effet sur le temps d’achèvement du job et la consommation des ressources
Module 6 : Ingestion et partitionnement efficaces des données
- Compréhension du problème des fichiers volumineux : pourquoi les sources réparties en de nombreux fichiers Parquet de 1 à 5 Mo dégradent les performances et faussent le partitionnement
- Stratégies de repartitionnement et de coalescence
- Contrôle de la taille des partitions à la lecture et à l’écriture
- Écriture efficace de Parquet pour éviter de recréer le problème des fichiers volumineux 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 avec Pandas et diagnostic des pannes
- Compréhension des causes racines des erreurs de mémoire insuffisante dans Pandas et reconnaissance des symptômes
- Application de motifs de conversion efficaces en mémoire entre Spark et Pandas
- Éviter les explosions de mémoire lors de l’écriture de grands jeux de données en CSV
- Utilisation du traitement par lots et de l’optimisation des types de données pour les environnements contraints
- Exercice pratique : Reproduire un scénario typique de mémoire insuffisante avec Pandas et le résoudre en utilisant le traitement par lots et 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 mémoire
- Compréhension de la place de Polars aux côtés de PySpark et Pandas dans les piles de données cloud modernes et les feuilles de route 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 à travers un pipeline ETL réaliste
- Compréhension des considérations d’optimisation spécifiques aux charges de travail d’apprentissage automatique exécutées sur le même cluster
- Application d’un flux de travail d’ajustement pratique pour diagnostiquer systématiquement les problèmes de coûts et de performances
- Exercice pratique : Terminer 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, les participants ajustant eux-mêmes la configuration Spark
Pré requis
Les participants doivent disposer de :
- Une expérience pratique de la programmation Python, incluant les fonctions, les modules et les concepts de base de la programmation orientée objet.
- Une expérience de base à intermédiaire dans le travail avec Pandas et les flux de travail de traitement de données tabulaires.
- Une familiarité de base avec PySpark et les DataFrames Spark, y compris la lecture des données, les transformations, les actions, les jointures et les agrégations.
- Une compréhension générale des concepts SQL et de traitement des données, y compris le filtrage, le regroupement et la jointure de jeux de données.
- Une familiarité de base avec les concepts Docker et Kubernetes, tels que les conteneurs, les images et les pods. Aucune expérience d’administration Kubernetes n’est requise.
- Une compréhension de base 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 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, d’un point de vue applicatif et de 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 distribué des données et les pipelines ETL.
- Les scientifiques de 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é 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 soutiennent les charges de travail Spark sur Kubernetes et qui ont besoin de comprendre comment la configuration au niveau de l’application affecte l’utilisation des ressources et les performances.
- Les chefs techniques et architectes de solutions impliqués dans la conception ou l’optimisation de plates-formes modernes de traitement des 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