Cas pratiques Apache Spark

60 cas pratiques Apache Spark disponibles. Niveaux : fondamental (20), avancé (20), expert (20).

Fait partie de : Cas pratiques de Big Data et pipelines de données

AvancéApache Spark

Lecture incrémentielle avec filtrage sur partition date

Contexte Un datalake stocke des données partitionnées par date au format Parquet. Le pipeline doit traiter uniquement les nouvelles partitions quotidiennement. Le Problème Le job actuel recharge l'intégralité des données à chaque exécution, ignorant le partitionnement existant. Contraintes Utiliser un filtre sur la colonne de partition pour partition pruning. Passer la date cible comme paramètre externe. Vérifier via explain() que le pruning est bien appliqué. Livrable attendu Un script PySpark exploitant le partition pruning pour une lecture incrémentielle efficace avec vérification du plan d'exécution.

sparkpartition-pruningparquet+2
AvancéApache Spark

Mise en cache stratégique d'un DataFrame réutilisé

Contexte Un pipeline de reporting utilise un même DataFrame transformé dans cinq chemins de calcul différents. Le Problème Chaque utilisation du DataFrame relance entièrement le plan d'exécution depuis la source, multipliant inutilement les lectures disque. Contraintes Appliquer cache() ou persist() au bon niveau du pipeline. Choisir le niveau de stockage adapté (MEMORY_AND_DISK). Appeler unpersist() en fin de traitement. Livrable attendu Un pipeline PySpark avec stratégie de cache explicite réduisant les recalculs inutiles.

sparkcachepersist+2
AvancéApache Spark

Mise en place d’un contrôle d’erreurs dans Structured Streaming

Contexte : Un pipeline Spark Structured Streaming traite des données en temps réel. Le Problème : En cas d’erreur de parsing, le flux s’arrête complètement. Contraintes : Implémenter une gestion robuste des erreurs (mode permissive, dead-letter queue). Maintenir la continuité du flux. Livrable attendu : Proposer une stratégie de gestion d’erreurs permettant au streaming de continuer malgré des enregistrements invalides.

structured-streamingerror-handlingresilience+2
AvancéApache Spark

Mise en place d’un traitement incrémental avec Spark Structured Streaming

Contexte : Une application reçoit des événements en continu via Kafka. Le Problème : Les données sont actuellement traitées en batch quotidien, ce qui retarde les analyses. Contraintes : Utiliser Structured Streaming pour lire depuis Kafka. Assurer un traitement idempotent. Gérer les checkpoints pour tolérance aux pannes. Livrable attendu : Proposer une architecture Spark Structured Streaming permettant un traitement incrémental fiable et résilient.

structured-streamingkafkareal-time+2
AvancéApache Spark

Mise en place d’une écriture optimisée avec partitionnement Parquet

Contexte : Les données transformées sont écrites en Parquet mais les requêtes ultérieures sont lentes. Le Problème : Aucun partitionnement n’est appliqué lors de l’écriture. Contraintes : Définir un partitionBy adapté (par exemple par date ou région). Optimiser la lecture ultérieure. Éviter un trop grand nombre de petits fichiers. Livrable attendu : Proposer une stratégie d’écriture Parquet optimisée pour de futures requêtes analytiques.

parquetpartitionBystorage+2
AvancéApache Spark

Optimisation d’un job Spark avec partitionnement adapté

Contexte : Un job Spark traite quotidiennement plusieurs centaines de gigaoctets de données transactionnelles. Le Problème : Les temps d’exécution sont instables à cause d’un partitionnement non maîtrisé, provoquant des tâches déséquilibrées. Contraintes : Analyser le nombre de partitions existantes. Ajuster via repartition ou coalesce selon le cas. Éviter les shuffles inutiles. Maintenir une bonne parallélisation. Livrable attendu : Proposer une stratégie de partitionnement optimisée permettant d’améliorer la stabilité et les performances du job Spark.

partitioningperformanceshuffle+2
AvancéApache Spark

Optimisation d'un job Spark souffrant de data skew

Contexte Un job PySpark effectuant une jointure entre un DataFrame de transactions et un référentiel clients produit des temps d'exécution anormalement longs. Le Problème La distribution des données est déséquilibrée : quelques valeurs de client_id concentrent 80% des lignes, provoquant un skew important sur certains executors. Contraintes Analyser la distribution avec groupBy().count(). Implémenter une stratégie salting pour redistribuer les clés skewed. Ne pas modifier le schéma de sortie. Livrable attendu Un script PySpark appliquant la technique de salting pour corriger le data skew et améliorer la distribution des partitions.

sparkperformanceskew+2
AvancéApache Spark

Optimisation d’un pipeline utilisant plusieurs transformations coûteuses

Contexte : Un pipeline Spark applique successivement plusieurs transformations (filter, join, groupBy). Le Problème : L’ordre des transformations n’est pas optimal et augmente le volume intermédiaire traité. Contraintes : Réorganiser les transformations pour réduire le dataset le plus tôt possible. Exploiter le Catalyst Optimizer. Livrable attendu : Proposer une réorganisation logique des transformations améliorant la performance globale du pipeline.

pipelineoptimizationtransformation+2
AvancéApache Spark

Optimisation d’une lecture de fichiers multiples de petite taille

Contexte : Le job Spark lit des milliers de petits fichiers depuis un stockage distribué. Le Problème : Les performances sont dégradées à cause du small files problem. Contraintes : Regrouper les fichiers ou ajuster la configuration spark.sql.files.maxPartitionBytes. Maintenir la scalabilité. Livrable attendu : Proposer une stratégie pour limiter l’impact des petits fichiers sur la performance globale.

small-filesperformanceconfiguration+2
AvancéApache Spark

Traitement de données semi-structurées JSON imbriquées

Contexte Un flux de données événementiels est stocké en JSON avec des champs imbriqués (objets et tableaux) qu'il faut aplatir pour analyse. Le Problème Le schéma JSON contient des champs nested et des arrays que les requêtes SQL standards ne peuvent pas interroger directement. Contraintes Utiliser getField(), explode() et col() pour aplatir la structure. Gérer le cas où le champ imbriqué peut être null. Livrable attendu Un script PySpark aplatissant correctement une structure JSON imbriquée en un DataFrame tabulaire exploitable.

sparkjsonnested+2
ExpertApache Spark

Architecture d'un lakehouse avec séparation Bronze/Silver/Gold

Contexte Une organisation souhaite refondre son datalake en adoptant l'architecture Medallion (Bronze/Silver/Gold) pour améliorer la gouvernance et la qualité des données. Le Problème Actuellement, toutes les données brutes et transformées cohabitent sans séparation, rendant impossible le contrôle de qualité et la traçabilité. Contraintes Définir les responsabilités et transformations de chaque couche. Implémenter le pipeline Bronze → Silver → Gold en PySpark avec Delta Lake. Ajouter des métadonnées de lignage (source, timestamp d'ingestion, version de traitement) à chaque couche. Livrable attendu Une implémentation PySpark complète de l'architecture Medallion avec Delta Lake, transformations documentées et métadonnées de lignage à chaque couche.

sparklakehousemedallion+2
ExpertApache Spark

Architecture d'un pipeline Spark Structured Streaming tolérant aux pannes

Contexte Une plateforme e-commerce doit traiter en temps réel un flux Kafka de clickstream pour alimenter un tableau de bord analytique. Le Problème Le pipeline Structured Streaming actuel perd des événements lors des redémarrages car aucun checkpoint n'est configuré et les offsets Kafka ne sont pas gérés. Contraintes Configurer un checkpoint directory sur HDFS ou S3. Gérer les offsets Kafka avec startingOffsets. Implémenter une logique exactly-once via foreachBatch(). Gérer les données tardives avec watermark. Livrable attendu Un pipeline Structured Streaming PySpark tolérant aux pannes avec checkpoint, gestion des offsets et sémantique exactly-once documentée.

sparkstreamingkafka+2
ExpertApache Spark

Conception d'un moteur de feature engineering distribué pour ML

Contexte Une équipe MLOps doit préparer un feature store à partir de données brutes pour alimenter des modèles de scoring crédit. Le Problème Le calcul des features (moyennes glissantes, ratios, encodage) est réalisé en pandas sur un échantillon, rendant impossible le déploiement sur le dataset complet de 50 millions de lignes. Contraintes Implémenter les features avec Window Functions pour les agrégats temporels. Utiliser VectorAssembler de MLlib pour la préparation finale. Éviter tout collect() ou toPandas() sur les données complètes. Livrable attendu Un pipeline PySpark de feature engineering entièrement distribué produisant un DataFrame compatible MLlib.

sparkfeature-engineeringmllib+2
ExpertApache Spark

Conception d'un pipeline multi-sources avec reconciliation et qualité

Contexte Une entreprise doit consolider des données clients provenant de trois sources hétérogènes (PostgreSQL via JDBC, S3 Parquet, API REST en JSON) avec des règles de réconciliation métier. Le Problème Les trois sources ont des schémas différents, des doublons inter-sources et des règles de priorité (la source PostgreSQL prime sur S3 qui prime sur l'API). Contraintes Créer un pipeline unifié avec gestion explicite des conflits. Implémenter des règles de qualité avec assertions sur les counts et nullity rates. Logger les rejets dans un DataFrame d'anomalies séparé. Livrable attendu Un pipeline PySpark multi-sources avec réconciliation priorisée, contrôles qualité et journalisation des anomalies.

sparkmulti-sourcereconciliation+2
ExpertApache Spark

Conception d’une architecture Spark haute disponibilité sur cluster distribué

Contexte : Votre plateforme traite plusieurs téraoctets de données par jour via Apache Spark déployé sur un cluster distribué. Le Problème : Une panne du driver ou d’un nœud entraîne l’échec complet des jobs critiques. Contraintes : Mettre en place un déploiement Spark en mode cluster avec gestion de la haute disponibilité (YARN, Kubernetes ou Standalone HA). Configurer le checkpointing et la tolérance aux pannes. Livrable attendu : Proposer une architecture Spark résiliente détaillant gestion du driver, du resource manager et des mécanismes de reprise automatique.

clusterhigh-availabilityfault-tolerance+2
ExpertApache Spark

Conception d’une stratégie de monitoring et tuning avancé du cluster Spark

Contexte : Les performances des jobs Spark sont variables selon la charge. Le Problème : Aucun monitoring structuré ni métriques avancées ne sont exploitées pour optimiser le cluster. Contraintes : Intégrer Spark UI, métriques JVM et outils de monitoring externes. Identifier les goulots d’étranglement CPU, mémoire et I/O. Livrable attendu : Proposer une stratégie complète de monitoring et tuning permettant d’améliorer durablement la performance du cluster Spark.

monitoringtuningperformance+2
ExpertApache Spark

Correction d’un déséquilibre massif de partitions dans un job critique

Contexte : Un job Spark critique montre une forte disparité entre tâches rapides et tâches très lentes. Le Problème : Certaines partitions contiennent beaucoup plus de données que d’autres. Contraintes : Identifier la cause du skew. Utiliser repartitionByRange ou salting si nécessaire. Minimiser l’impact sur la logique métier. Livrable attendu : Proposer une stratégie technique pour équilibrer efficacement les partitions et stabiliser le temps d’exécution.

partition-skewperformancerepartition+2
ExpertApache Spark

Correction d’un job provoquant un OutOfMemoryError sur executor

Contexte : Un job Spark complexe exécute plusieurs jointures et agrégations sur un dataset massif. Le Problème : Certains executors échouent avec OutOfMemoryError malgré une configuration mémoire élevée. Extrait actuel : spark.executor.memory=4g spark.sql.shuffle.partitions=200 Les paramètres ne sont pas adaptés à la volumétrie réelle. Contraintes : Analyser le plan d’exécution. Ajuster la mémoire executor, les partitions shuffle et éventuellement la sérialisation (Kryo). Livrable attendu : Proposer une stratégie d’optimisation mémoire permettant d’éviter les erreurs tout en maintenant les performances.

memoryexecutorshuffle+2
ExpertApache Spark

Correction d’un pipeline Structured Streaming non idempotent

Contexte : Un pipeline Spark Structured Streaming traite des événements financiers en temps réel. Le Problème : Lors d’un redémarrage, certains événements sont traités deux fois, générant des incohérences. Extrait logique actuelle : .writeStream .outputMode("append") Aucune gestion d’idempotence n’est prévue. Contraintes : Utiliser des checkpoints fiables. Garantir exactly-once semantics avec Kafka ou autre source. Préserver la cohérence métier. Livrable attendu : Proposer une correction garantissant un traitement idempotent et tolérant aux redémarrages.

structured-streamingidempotencecheckpoint+2
ExpertApache Spark

Débogage d'un job Spark en production via Spark UI et métriques

Contexte Un job Spark de production présente des comportements intermittents : parfois rapide, parfois 10x plus lent sans changement de code apparent. Le Problème L'équipe ne sait pas interpréter le Spark UI pour identifier la cause des ralentissements (GC overhead, spill, skew, shuffle). Contraintes Décrire la méthodologie d'analyse du Spark UI : stages, tasks, métriques GC, shuffle read/write. Identifier les patterns caractéristiques de chaque problème. Proposer des corrections ciblées pour chaque cause identifiée. Livrable attendu Un guide de diagnostic structuré couvrant les 4 causes principales de lenteur Spark, avec métriques Spark UI associées et actions correctives.

sparkdebuggingspark-ui+2
ExpertApache Spark

Implémentation d'un Delta Lake avec gestion ACID et time travel

Contexte Une équipe data engineering doit remplacer un datalake Parquet classique par une solution supportant les mises à jour ACID et la traçabilité des modifications. Le Problème Le format Parquet ne supporte pas les updates et deletes natifs, rendant impossible la conformité GDPR (droit à l'oubli). Contraintes Utiliser Delta Lake (delta-spark). Implémenter merge() pour upsert. Démontrer le time travel avec versionAsOf. Implémenter VACUUM pour nettoyage des anciennes versions. Livrable attendu Un script PySpark complet démontrant écriture Delta, upsert via merge(), time travel et gestion du cycle de vie des données.

sparkdelta-lakeacid+2
ExpertApache Spark

Implémentation d'un SCD Type 2 distribué avec Spark

Contexte Un datawarehouse doit maintenir l'historique complet des changements de statut client (Slowly Changing Dimension Type 2). Le Problème L'implémentation actuelle écrase les valeurs existantes sans conserver l'historique, perdant l'évolution des données dans le temps. Contraintes Utiliser join() et Window Functions pour identifier les enregistrements modifiés. Gérer les colonnes valid_from, valid_to et is_current. Assurer idempotence du traitement en cas de rejeu. Livrable attendu Un script PySpark implémentant un SCD Type 2 complet avec gestion de l'historique et idempotence garantie.

sparkscd2historisation+2
ExpertApache Spark

Mise en conformité d’un cluster Spark avec exigences de sécurité avancées

Contexte : Votre organisation traite des données sensibles via Spark. Le Problème : Les communications inter-nœuds et l’accès aux données ne sont pas suffisamment sécurisés. Contraintes : Activer l’authentification Spark. Configurer le chiffrement SSL/TLS. Restreindre l’accès aux ressources cluster. Livrable attendu : Proposer une configuration sécurisée du cluster Spark garantissant confidentialité, intégrité et contrôle d’accès strict.

securitysslauthentication+2
ExpertApache Spark

Mise en place d’un pipeline Delta Lake avec gestion ACID

Contexte : Les équipes souhaitent bénéficier de transactions ACID sur leur data lake Spark. Le Problème : Les mises à jour concurrentes provoquent des incohérences sur des fichiers Parquet standards. Contraintes : Implémenter Delta Lake. Activer le versioning et la gestion des transactions. Garantir la compatibilité avec les workloads existants. Livrable attendu : Proposer une architecture Delta Lake permettant gestion ACID, time travel et contrôle des écritures concurrentes.

delta-lakeaciddata-lake+2
ExpertApache Spark

Optimisation avancée d’une jointure multi-tables avec Adaptive Query Execution

Contexte : Une requête Spark SQL joint plusieurs tables volumineuses issues d’un data lake. Le Problème : Les performances varient fortement selon la distribution des données. Contraintes : Activer Adaptive Query Execution (AQE). Optimiser la stratégie de jointure (broadcast, sort-merge). Réduire les shuffles inutiles. Livrable attendu : Proposer une configuration et une stratégie permettant d’améliorer dynamiquement l’exécution des jointures volumineuses.

aqejoin-optimizationperformance+2
ExpertApache Spark

Optimisation avancée via tuning du plan d'exécution Catalyst

Contexte Un job analytique critique prend 3 heures sur un cluster de 20 nœuds pour traiter 500GB de données. Le Problème L'analyse du Spark UI révèle des stages déséquilibrés, un nombre de partitions inadapté après shuffle et des spill mémoire fréquents. Contraintes Ajuster spark.sql.shuffle.partitions en fonction du volume. Forcer un AQE (Adaptive Query Execution) avec les configurations appropriées. Corriger les spill en ajustant spark.executor.memory et spark.memory.fraction. Documenter chaque paramètre modifié. Livrable attendu Une configuration Spark optimisée avec justification technique de chaque paramètre, visant une réduction significative du temps d'exécution.

sparkcatalystaqe+2
ExpertApache Spark

Optimisation d’un data lake avec gestion des petits fichiers

Contexte : Le data lake contient des millions de petits fichiers générés par des jobs Spark successifs. Le Problème : Les performances de lecture se dégradent fortement à cause du small files problem. Contraintes : Mettre en place une stratégie de compaction périodique. Ajuster la taille cible des fichiers. Optimiser la configuration d’écriture. Livrable attendu : Proposer une solution complète de gestion des petits fichiers améliorant la performance globale du cluster.

data-lakesmall-filescompaction+2
ExpertApache Spark

Optimisation d'un job GraphX pour analyse de réseau à grande échelle

Contexte Une équipe fraud detection doit identifier les communautés dans un graphe de transactions financières de 100 millions d'arêtes. Le Problème L'algorithme de détection de communautés actuel dépasse les limites mémoire du cluster et ne converge pas après 50 itérations. Contraintes Utiliser GraphFrames (successeur de GraphX) avec l'algorithme Label Propagation. Limiter le nombre d'itérations avec un critère de convergence. Filtrer les arêtes de faible poids avant traitement pour réduire le graphe. Livrable attendu Un script PySpark utilisant GraphFrames pour détection de communautés avec optimisations de convergence et réduction préalable du graphe.

sparkgraphframesgraph+2
ExpertApache Spark

Optimisation d’un job MLlib distribué sur grand volume

Contexte : Une équipe data science entraîne un modèle via MLlib sur un dataset massif. Le Problème : L’entraînement prend plusieurs heures et consomme excessivement les ressources cluster. Contraintes : Optimiser la préparation des données. Ajuster le nombre de partitions. Configurer correctement la mémoire executor et driver. Livrable attendu : Proposer une stratégie d’optimisation complète pour accélérer l’entraînement distribué tout en maîtrisant les ressources.

mllibmachine-learningperformance+2
ExpertApache Spark

Résolution d'un problème de small files aggravant les performances HDFS

Contexte Un pipeline Spark génère plusieurs milliers de petits fichiers Parquet par jour, dégradant progressivement les performances de lecture HDFS et surchargeant le NameNode. Le Problème Chaque micro-batch Spark écrit autant de fichiers que de partitions actives, produisant des fichiers de quelques Ko. Contraintes Impémenter une stratégie de compaction post-écriture avec coalesce(). Configurer le nombre de fichiers cibles en fonction de la taille optimale (128-256MB). Automatiser la compaction sans interruption du pipeline principal. Livrable attendu Une stratégie de compaction PySpark réduisant le nombre de fichiers produits et maintenant des tailles de fichiers optimales pour HDFS.

sparksmall-filescompaction+2

Questions originales conçues par CodeDuel. CodeDuel n'est affilié à aucun éditeur ni organisme de certification cité ; les noms de certifications et les marques appartiennent à leurs titulaires et servent uniquement à indiquer le domaine couvert. Signaler un contenu

    Cas pratiques Apache Spark : 60 mises en situation – page 2 | CodeDuel