Le Lakehouse est l architecture data dominante en 2025. En entretien Architecture ou Lead, on évalue la capacité à concevoir une architecture Lakehouse robuste, performante et économique.
Qu est-ce que la medallion architecture ? Comment organisez-vous vos zones ?
# Medallion Architecture : Bronze → Silver → Gold
# BRONZE (raw)
# - Données brutes, immuables
# - Partitionnement par date d ingestion
# - Rétention longue (7 ans)
s3://datalake/bronze/
orders/ingestion_date=2025-01-15/
part-00000.parquet
# SILVER (curated)
# - Données nettoyées, déduplicées
# - Table Delta/Iceberg avec schema enforced
# - Tests de qualité passés
s3://datalake/silver/
orders/ (Delta table)
# GOLD (consumption)
# - Agrégations métier
# - Optimisé pour la BI et le ML
# - Accès contrôlé par rôle
s3://datalake/gold/
fct_revenue/
dim_customers/Comment choisissez-vous entre Delta Lake, Iceberg et Hudi pour votre Lakehouse ?
Qu est-ce que le problème des small files ? Comment le résolvez-vous ?
# Problème : le streaming crée des milliers de petits fichiers
# -> les lectures sont lentes (overhead par fichier)
# Delta Lake : OPTIMIZE compacte les petits fichiers
from delta.tables import DeltaTable
delta = DeltaTable.forPath(spark, '/datalake/silver/orders')
delta.optimize().executeCompaction()
# Planifier la compaction (toutes les nuits via Airflow)
@task
def compact_delta_table(path: str):
delta = DeltaTable.forPath(spark, path)
delta.optimize().executeZOrderBy('region', 'order_date')
# Iceberg : rewrite_data_files
SPARK.sql("""
CALL spark_catalog.system.rewrite_data_files(
table => 'silver.orders',
strategy => 'sort',
sort_order => 'region, order_date'
)
""")Comment gérez-vous la rétention des données et l espace de stockage dans Delta Lake ?
# VACUUM : supprimer les anciens fichiers (time travel)
# Par défaut : garder 7 jours d historique
VACUUM delta.`/datalake/silver/orders` RETAIN 168 HOURS;
# Sur Databricks : vacuum automatique
delta.optimize().executeVacuum(168) # 168 heures = 7 jours
# Attention : après VACUUM, impossible de faire time travel
# au-delà de la rétention configurée
# Iceberg : expire_snapshots
SPARK.sql("""
CALL spark_catalog.system.expire_snapshots(
table => 'silver.orders',
older_than => TIMESTAMP '2025-01-01 00:00:00.000',
retain_last => 10
)
""")Quel catalog utilisez-vous pour gérer les tables de votre Lakehouse ?
Comment implémentez-vous le contrôle d accès par rôle dans un Lakehouse ?
| Niveau | Maitrise | Signal GO | NO-GO |
|---|---|---|---|
| Confirmé | Medallion architecture, Delta/Iceberg basique | Organise ses données en zones Bronze/Silver/Gold, connaît Delta et Iceberg | Stocke toutes les données dans un seul dossier S3 plat |
| Senior | Compaction, vacuum, catalog, sécurité par zone | Planifie la compaction automatiquement, configure le vacuum, gère la sécurité par zone | Ne sait pas ce que sont les small files ni comment les résoudre |
| Lead | Choix du table format justifié, architecture multi-cloud, gouvernance | Justifie le choix Delta vs Iceberg selon le contexte, a conçu une architecture Lakehouse from scratch | Ne peut pas expliquer pourquoi Iceberg est préféré à Delta en contexte multi-cloud |
Premier entretien gratuit. Rapport GO/NO-GO sous 48h.