Les entretiens Databricks mêlent généralement Apache Spark (comment les jobs s'exécutent, pourquoi ils sont lents), Delta Lake (ce qui rend les tables fiables) et la plateforme (clusters, jobs, gouvernance). Les meilleures réponses relient chaque concept à un problème concret comme les jointures déséquilibrées, les petits fichiers ou un pipeline qui doit pouvoir être relancé en toute sécurité.
Databricks renomme et réorganise ses produits assez souvent, alors précisez quels noms vous avez utilisés (par exemple Delta Live Tables, désormais intégré à la famille Lakeflow) et vérifiez la stack dans l'offre d'emploi.
Voici 25 questions avec leurs réponses.
Plateforme et architecture
1. Qu'est-ce que Databricks, et qu'est-ce qu'un lakehouse ?
Databricks est une plateforme cloud de données et d'IA construite autour d'Apache Spark. Un lakehouse conserve les données dans des formats ouverts sur du stockage objet cloud et y ajoute la fiabilité et la gouvernance d'un entrepôt de données, de sorte qu'une seule copie des données peut servir à l'ingénierie, à l'analytique et au machine learning.
2. Quelle est la différence entre les clusters all-purpose, les clusters de job et les entrepôts SQL ?
Les clusters all-purpose servent au travail interactif et au développement. Les clusters de job démarrent pour un job planifié et s'arrêtent ensuite, ce qui coûte moins cher. Les entrepôts SQL sont du compute optimisé pour les requêtes SQL et BI.
3. Comment maîtriser les coûts ?
Utilisez des clusters de job en production, l'arrêt automatique sur les clusters interactifs, l'autoscaling avec des limites raisonnables, des types d'instances adaptés, des instances spot pour les traitements tolérants aux pannes, des politiques de cluster pour limiter ce que les utilisateurs peuvent créer, et des tags pour le suivi des coûts.
4. Qu'est-ce qu'Unity Catalog ?
La couche de gouvernance des actifs de données et d'IA. Elle offre un espace de noms à trois niveaux (catalogue, schéma, table), un contrôle d'accès centralisé, la traçabilité et l'audit sur l'ensemble des workspaces.
Delta Lake
5. Qu'est-ce que Delta Lake, et pourquoi l'utiliser plutôt que du Parquet simple ?
Delta Lake est un format de table qui ajoute un journal de transactions aux fichiers Parquet. Il apporte les transactions ACID, l'application et l'évolution du schéma, le time travel, ainsi que des mises à jour et suppressions efficaces. Le Parquet simple n'a pas de transactions : une écriture échouée peut laisser des données partielles, et les lecteurs peuvent voir un état incohérent.
6. Comment fonctionne le journal de transactions Delta ?
Chaque commit ajoute une entrée JSON dans le dossier _delta_log, avec des checkpoints périodiques. Le journal indique quels fichiers de données composent la table à chaque version. Les lecteurs s'en servent pour voir un snapshot cohérent, et les écrivains utilisent la concurrence optimiste, en réessayant ou en échouant si un autre commit entre en conflit.
7. Qu'est-ce que le time travel ?
C'est interroger une version antérieure d'une table par numéro de version ou par horodatage, pour l'audit, le débogage ou le rollback.
SELECT * FROM sales VERSION AS OF 12;
RESTORE TABLE sales TO VERSION AS OF 12;
8. Comment faire un upsert de données avec Delta ?
Avec MERGE INTO :
MERGE INTO customers t
USING updates s ON t.id = s.id
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *;
Assurez-vous que la source contient une seule ligne par clé, sinon le merge échoue ou produit des résultats erronés.
9. Que font OPTIMIZE et VACUUM ?
OPTIMIZE compacte de nombreux petits fichiers en fichiers plus gros, ce qui accélère les lectures. VACUUM supprime les fichiers qui ne sont plus référencés par la table et qui sont plus anciens que la période de rétention, ce qui libère du stockage mais limite le time travel. Ne réglez pas une rétention très courte si d'autres jobs peuvent encore lire des versions anciennes.
10. Comment organiser les données pour des requêtes rapides ?
Partitionnez uniquement sur des colonnes à faible cardinalité que les requêtes filtrent souvent, et gardez des partitions suffisamment grandes. Un sur-partitionnement crée beaucoup de petits fichiers. Pour les autres colonnes, utilisez le Z-ordering ou le liquid clustering (l'approche plus récente), qui regroupent les données pour que les requêtes puissent sauter des fichiers.
Fondamentaux de Spark
11. Que sont les transformations et les actions, et qu'est-ce que l'évaluation paresseuse (lazy evaluation) ?
Les transformations comme filter et select construisent un plan mais ne s'exécutent pas. Les actions comme count et write déclenchent l'exécution. Comme Spark voit d'abord l'ensemble du plan, il peut l'optimiser.
12. Qu'est-ce qu'un shuffle, et pourquoi est-ce coûteux ?
Un shuffle déplace des données entre les exécuteurs via le réseau afin que les lignes ayant la même clé se retrouvent ensemble, comme dans les jointures, groupBy et distinct. Cela implique des E/S disque et réseau, donc réduire les shuffles est le principal levier pour accélérer les jobs.
13. Comment Spark joint-il deux tables, et comment accélérer cela ?
Par défaut, les grandes jointures utilisent une jointure par shuffle (sort-merge). Si une table est petite, une jointure par diffusion (broadcast join) l'envoie à chaque exécuteur et évite de shuffler la grande table.
from pyspark.sql.functions import broadcast
df = big.join(broadcast(small), "id")
14. Qu'est-ce que le déséquilibre de données (data skew), et comment y remédier ?
Quelques clés concentrent la majorité des lignes, donc quelques tâches prennent beaucoup plus de temps que les autres. Le signe révélateur est une tâche qui tourne longtemps dans l'UI Spark. Les solutions : la gestion du skew par l'exécution adaptative des requêtes, le salage de la clé, la diffusion du côté le plus petit, ou le filtrage des clés nulles ou par défaut qui causent le skew.
15. Qu'est-ce que l'exécution adaptative des requêtes (AQE) ?
Spark ajuste le plan pendant l'exécution en utilisant des statistiques réelles : il peut fusionner les petites partitions de shuffle, changer de stratégie de jointure et découper les partitions déséquilibrées. Elle est activée par défaut dans les versions récentes.
16. Quelle est la différence entre repartition et coalesce ?
repartition peut augmenter ou diminuer le nombre de partitions et effectue un shuffle complet. coalesce ne fait que diminuer le nombre de partitions et évite un shuffle complet, donc c'est moins coûteux mais cela peut produire des partitions inégales.
17. Quand faut-il mettre en cache un DataFrame ?
Quand vous réutilisez le même DataFrame plusieurs fois dans un job et que son recalcul est coûteux. Ne mettez pas en cache ce qui n'est utilisé qu'une fois, et libérez le cache une fois terminé.
18. Pourquoi préférer les fonctions natives aux UDF Python ?
Les fonctions natives s'exécutent dans la JVM et peuvent être optimisées. Les UDF Python déplacent les données entre la JVM et Python et sont opaques pour l'optimiseur, donc elles sont plus lentes. Utilisez les fonctions natives ou les UDF pandas quand c'est possible.
Pipelines
19. Qu'est-ce que l'architecture médaillon ?
Une conception en couches : le bronze contient les données brutes ingérées, l'argent contient les données nettoyées et conformées, et l'or contient les agrégats métier prêts pour le reporting. Cela clarifie où se font les contrôles qualité et permet de reconstruire les couches suivantes à partir des précédentes.
20. Qu'est-ce qu'Auto Loader ?
Une fonctionnalité qui ingère de manière incrémentielle et efficace les nouveaux fichiers du stockage cloud à mesure qu'ils arrivent, en suivant les fichiers déjà traités, avec prise en charge de l'inférence et de l'évolution du schéma.
21. Comment le Structured Streaming gère-t-il les pannes et le exactly-once ?
Il utilise des checkpoints qui stockent la progression et l'état, donc une requête redémarrée reprend là où elle s'était arrêtée. Avec des sources rejouables et des sinks idempotents ou transactionnels comme Delta, vous obtenez des résultats exactly-once de bout en bout.
22. Comment rendre un pipeline sûr à réexécuter ?
Rendez les écritures idempotentes : utilisez MERGE sur une clé, écrasez une partition spécifique, ou utilisez un identifiant d'exécution pour éviter les doublons. Gardez explicite la plage d'entrée du job et journalisez le nombre de lignes pour pouvoir vérifier les résultats.
23. Comment effectuer des contrôles de qualité des données ?
Utilisez des attentes ou des contraintes dans le pipeline (par exemple des contraintes Delta ou des attentes de pipeline déclaratives), validez le nombre de lignes, les valeurs nulles et l'unicité, et mettez en quarantaine les lignes incorrectes plutôt que de faire échouer tout le chargement, selon le contrat avec les utilisateurs en aval.
Scénarios
24. Un job qui tournait en 20 minutes prend maintenant trois heures. Que faites-vous ?
- Comparez l'UI Spark des deux exécutions : quelle étape est devenue plus lente ?
- Vérifiez la taille des entrées et si une table a grossi ou perdu sa disposition, par exemple de nombreux petits fichiers.
- Cherchez un skew dans l'étape lente, et un débordement sur disque (spilling).
- Vérifiez les changements de cluster, comme moins de workers ou un type d'instance modifié.
- Vérifiez les changements dans le code ou les paramètres Spark, et l'ajout d'une nouvelle jointure ou UDF.
- Corrigez la cause (compaction, broadcast, gestion du skew ou dimensionnement) et ajoutez de la supervision.
25. Concevez un pipeline qui ingère des fichiers JSON quotidiens et alimente un tableau de bord.
« Auto Loader lit les nouveaux fichiers dans une table Delta bronze avec les données brutes et les métadonnées. Un job les analyse et les nettoie vers l'argent, en dédupliquant par clé avec MERGE. Une table or agrège pour le tableau de bord, qui lit depuis un entrepôt SQL. Unity Catalog gère les accès, les attentes interceptent les données incorrectes, et le job s'exécute sur un cluster de job avec des alertes en cas d'échec et d'anomalies du nombre de lignes. »
Comment se préparer
Entraînez-vous sur un notebook qui lit un fichier, fait une jointure avec une autre table, écrit dans Delta et utilise MERGE. Ouvrez la Spark UI et repérez un shuffle ainsi qu'une tâche déséquilibrée. Préparez une anecdote sur l'optimisation ou la correction d'un pipeline, avec des chiffres à l'appui. Pour les sujets connexes, consultez nos guides sur Kafka, Snowflake et Talend.
Énoncez vos réponses à voix haute, en particulier celles sur les performances, où les candidats ont tendance à énumérer des astuces d'optimisation sans poser de diagnostic. Une transcription d'entretien simulé montre où cela coince. Respectez les règles de l'employeur concernant les outils d'IA lors de tout entretien en direct.
Entraînez-vous aux réponses d'entretien Databricks avec YesToTheOffer
Faites un entretien technique simulé, expliquez à voix haute une conception de pipeline et examinez votre transcription ensuite. 30 minutes gratuites, sans abonnement.



