Ce test vérifie si un candidat comprend vraiment le calcul distribué, ou s'il a juste « fait du Spark ». On donne un traitement simple en apparence, mais qui cache un piège de performance classique : la jointure d'une grosse table avec une petite. Corrigé et signaux inclus.
Le cœur du test : la conscience du shuffle (déplacement de données entre machines). Un vrai profil sait qu'une jointure naïve entre grosse et petite table déclenche un shuffle coûteux, évitable par un broadcast.
« Calcule le CA par catégorie : une grosse table de commandes, une petite table de produits. »
Commandes fait des milliards de lignes ; produits en fait quelques milliers. Le candidat doit joindre les deux et agréger — en évitant le piège de performance.
commandes : ~1 milliard de lignes (produit_id, montant)
produits : ~5 000 lignes (id, categorie)
-- Objectif : CA total par categorieUne jointure naïve déclenche un shuffle massif.
Par défaut, Spark redistribue les deux tables sur le cluster pour les joindre (sort-merge join) : sur un milliard de lignes, c'est très coûteux. La petite table peut au contraire être diffusée (broadcast) à tous les nœuds.
Un broadcast join, et une agrégation propre.
La solution efficace diffuse la petite table de produits, ce qui évite de déplacer la grosse table. Le candidat doit expliquer pourquoi — c'est ça qu'on évalue.
from pyspark.sql import functions as F
resultat = (
commandes
.join(F.broadcast(produits), commandes.produit_id == produits.id)
.groupBy("categorie")
.agg(F.sum("montant").alias("ca"))
)
# broadcast(produits) evite de shuffler le milliard de lignes de commandes.Signal d'alerte : le vrai marqueur : le candidat sait expliquer pourquoi le broadcast évite le shuffle. Réciter « j'utilise broadcast » sans comprendre le shuffle ne suffit pas — creusez le pourquoi.
| Niveau | Maîtrise attendue | Signal GO | NO-GO |
|---|---|---|---|
| Junior | Écrit une jointure qui fonctionne | Obtient le bon résultat | Utilise collect() sur un gros volume |
| Confirmé | Connaît le broadcast join | Broadcaste la petite table | Laisse un shuffle massif se produire |
| Senior | Explique le shuffle | Justifie le broadcast par le coût | Applique broadcast sans comprendre |
| Lead | Optimise et diagnostique via la Spark UI | Sait aussi quand Spark est inutile | Ajoute Spark là où un script suffirait |
Data Builder mène l'entretien technique et vous livre un rapport clair et détaillé sous 24h. Premier entretien offert.