đ Databricks â Lakehouse, Spark, Delta Lake & Unity Catalog
Guide complet IDEO-Lab sur la plateforme "Data + AI" (Spark managé).
Concept : Data & AI Platform
Plateforme unifiée (par les créateurs de Spark).
Databricks Data AIArchitecture Cloud (VPC)
Control Plane (SaaS) vs Data Plane (Client VPC).
Architecture Control Plane Data Planevs. Snowflake / EMR
Data Science (Databricks) vs SQL (Snowflake).
Snowflake AWS EMRMoteur : Apache Spark
Calcul distribué (RDD, DataFrames, Spark SQL).
Apache Spark DataFrameMoteur : Photon
Moteur C++ (Vectorisé). Remplace Spark (Rapide).
Photon C++ VectorizedCompute : Clusters
All-Purpose (Interactif) vs Job (Automatisé).
Clusters JobsLe ProblĂšme : Lake vs Warehouse
Data Lake (S3, Staging) vs Data Warehouse (SQL, BI).
Data Lake Data WarehouseConcept : Le Lakehouse
Le meilleur des deux (ACID sur le Data Lake).
Lakehouse Delta LakeStockage : Delta Lake
ACID, Time Travel, Z-Ordering (Parquet + Logs JSON).
Delta Lake ACID Time TravelGouvernance : Unity Catalog (UC)
Le metastore centralisé (Data & AI).
Unity Catalog MetastoreUC : ModĂšle (3 Niveaux)
Catalog.Schema.Table (SQL Standard).
UC : Sécurité & Lineage
GRANT (SQL ACL), Data Lineage (Traçabilité).
Persona : Data Engineering
Pipelines (ETL/ELT), Architecture (Bronze/Silver/Gold).
Data Engineering ETLOutil : Notebooks
Interactif (Python, Scala, SQL, R). (%sql, %python).
Outil : Jobs (Workflows)
Orchestration (Scheduling) de Notebooks/Tasks (DAGs).
Jobs WorkflowsPersona : Data Analytics (SQL)
Analyse BI (Business Intelligence) sur le Lakehouse.
Data Analytics SQLOutil : Databricks SQL
SQL Warehouses (Clusters Photon), SQL Editor, Dashboards.
Databricks SQL SQL WarehousePersona : Data Science (ML)
Machine Learning (Scikit-learn, TensorFlow, PyTorch).
Data Science Machine LearningOutil : MLflow
Gestion du cycle de vie ML (Tracking, Models, Registry).
MLflow MLOpsOutil : DLT (Delta Live Tables)
Pipelines ETL déclaratifs (Streaming, Auto-scaling).
Delta Live Tables ETLCompute : Serverless
DBSQL Serverless (Compute instantané, managé).
Serverless DBSQLQu'est-ce que Databricks ?
Databricks est une plateforme unifiée (SaaS) pour le Data Engineering, le Data Warehousing (SQL), la Data Science et l'IA (Machine Learning).
Elle a été fondée par les créateurs originaux d'Apache Spark (2.1). Databricks est (essentiellement) une plateforme commerciale qui fournit "Apache Spark" en tant que service managé, optimisé, et intégré à un écosystÚme (Delta Lake, MLflow, Unity Catalog).
Le "Lakehouse" (La Vision)
La philosophie de Databricks est le "Lakehouse" (3.2) : une architecture ouverte qui combine la flexibilité et le coût d'un Data Lake (ex: S3, ADLS) avec la performance et la fiabilité (ACID) d'un Data Warehouse (ex: Snowflake, Redshift).
Databricks est une plateforme SaaS hybride qui fonctionne sur AWS, Azure, ou GCP. Elle utilise une architecture unique qui sépare le "ContrÎle" (managé par Databricks) et les "Données" (managés par vous).
+------------------------------------------+
| [ DATABRICKS SAAS (Control Plane) ] | (Tourne dans le Cloud de Databricks)
| |
| - Interface Web (UI) / API |
| - Gestion des Notebooks |
| - Orchestrateur (Jobs) |
| - Metastore (Unity Catalog) |
+------------------------------------------+
â
â (Commandes sĂ©curisĂ©es)
â (ex: "CrĂ©er un Cluster", "Lancer Job")
â
âŒ
+------------------------------------------+
| [ VOTRE CLOUD (Data Plane) ] | (Tourne dans votre VPC AWS/Azure/GCP)
| |
| +------------------+ |
| | Cluster (Compute)| (VMs EC2/...) |
| | (Spark / Photon) | |
| +------------------+ |
| â |
| â (Lit/Ăcrit) |
| ⌠|
| +------------------+ |
| | Stockage (Data) | (ex: S3 Bucket) |
| | (Delta Lake) | |
| +------------------+ |
+------------------------------------------+
- Control Plane (Plan de ContrÎle) : L'interface web, les APIs, l'orchestrateur. Managé par Databricks.
- Data Plane (Plan de Données) : C'est là que les données sont stockées (votre S3) et traitées (vos VMs/Clusters). Managé par Vous (dans votre VPC).
Avantage (Sécurité) : Vos données brutes (Delta Lake sur S3) ne quittent jamais votre compte Cloud (VPC).
| CritĂšre | Databricks (Lakehouse) | Snowflake (Data Warehouse) | AWS EMR (Spark) |
|---|---|---|---|
| Usage Principal | Data Science (ML), Ingénierie (PySpark), SQL. | SQL Analytique (BI), Data Warehouse pur. | "DIY" Spark (Spark "brut" managé). |
| Architecture | Lakehouse (Ouvert). Stockage (S3) séparé. | EntrepÎt (Fermé). Stockage (S3) séparé (mais géré). | Cluster (Hadoop/Spark) sur EC2. |
| Format (Stockage) | Delta Lake (Open) (Basé sur Parquet). | Propriétaire (Données compressées/chiffrées). | (Ce que vous voulez : Parquet, CSV...). |
| Langages | Python, Scala, SQL, R. | SQL (Support Python/Java récent). | Python, Scala, Java. |
| Niveau (Managé) | TrÚs élevé (SaaS + Data Plane). | TrÚs élevé (SaaS). | Moyen (IaaS/PaaS). (Gestion des VMs EC2). |
Le Moteur de Calcul Distribué
Apache Spark (le cĆur historique de Databricks) est un moteur de calcul distribuĂ© (distribuĂ©), open-source, conçu pour le Big Data. Il remplace "MapReduce" (Hadoop).
Principe (In-Memory) : Spark est rapide car il essaie de garder les données (DataSets) en mémoire vive (RAM) (In-Memory) sur le cluster, au lieu de lire/écrire sur le disque (HDFS/S3) à chaque étape.
Architecture (Cluster)
- Driver (Pilote) : Le "cerveau" (le
main()de votre app) qui décompose le travail (le "plan"). - Executors (Exécuteurs) : Les "muscles" (workers) qui effectuent les tùches (calculs) sur des partitions de données.
RDD vs DataFrame (L'API)
RDD (Resilient Distributed Dataset) : (L'API "bas niveau" - Legacy) Une collection d'objets (non-structurée). (Difficile à optimiser).
DataFrame (DataFrames / Datasets) : (L'API "haut niveau" - Moderne) Une table (structurée) (comme un Pandas DataFrame ou une table SQL) distribuée sur le cluster. C'est le standard aujourd'hui.
Spark SQL
Permet d'exĂ©cuter des requĂȘtes SQL (ex: SELECT * FROM ...) directement sur des DataFrames (ou des fichiers Parquet/Delta).
Catalyst Optimizer : Le "cerveau" de Spark SQL qui traduit le SQL (ou le code DataFrame) en un plan d'exécution (DAG) physique optimisé.
Photon est le nouveau moteur (engine) de Databricks. C'est le "remplaçant" de Spark.
ProblÚme (Spark) : Spark est écrit en Scala (JVM). Il souffre des limitations de la JVM (ex: Garbage Collection, JIT...).
Photon (Le "Natif")
Photon est une réécriture complÚte du moteur de calcul Spark, en C++ (natif).
Caractéristiques :
- ExĂ©cution VectorisĂ©e (Vectorized Query Processing) : (Similaire aux BDDs analytiques) Traite les donnĂ©es par "colonnes" (batches) au lieu de "lignes" (rows). (ExtrĂȘmement efficace pour le CPU/SIMD).
- Compatible API : 100% compatible avec les APIs Spark (DataFrames, SQL). C'est un "swap" transparent.
RĂ©sultat : Beaucoup plus rapide (3x-8x) que Spark (JVM) pour les requĂȘtes SQL et DataFrame (ETL, BI).
Usage : C'est le moteur par défaut des Databricks SQL Warehouses (6.2).
Dans Databricks, le "Compute" (la puissance de calcul Spark/Photon) est fourni par des Clusters (un groupe de VMs EC2/Azure).
All-Purpose vs Job Clusters
| Type | Usage | Coût |
|---|---|---|
| All-Purpose Cluster | (Interactif) Pour le développement (attaché à un Notebook). (Multi-utilisateurs). | Plus cher (DBU). |
| Job Cluster | (Automatisé) Un cluster éphémÚre (créé/détruit) pour une seule tùche (Job). | Moins cher (DBU). (Bonne pratique de Prod). |
Databricks SQL Warehouse
C'est un type de "Compute" spĂ©cifique (optimisĂ© Photon) conçu uniquement pour exĂ©cuter des requĂȘtes SQL (BI) (via l'Ăditeur SQL (6.2) ou des outils (Tableau, Power BI)).
Serverless : (Voir 7.3) Le mode "Serverless SQL" permet un démarrage instantané (pas d'attente de cluster).
Historiquement, les entreprises avaient deux "silos" de données :
1. Data Lake (Lac de Données)
(ex: AWS S3, Azure ADLS, HDFS)
Stockage : Fichiers ouverts (Parquet, CSV, JSON).
Schéma : "Schema-on-Read" (Schéma à la lecture).
- Avantage : Pas cher (stockage S3), Flexible (stocke tout : logs, images, vidéo).
- Inconvénient : Lent (Query), Non fiable (Pas d'ACID), "Data Swamp" (Marais de données).
- Usage : Data Science, ML (Staging).
2. Data Warehouse (EntrepĂŽt)
(ex: Snowflake, Redshift, BigQuery)
Stockage : Format propriétaire, optimisé (Colonnes).
Schéma : "Schema-on-Write" (Schéma à l'écriture).
- Avantage : TrĂšs rapide (Query SQL), Fiable (ACID), Gouvernance (SQL GRANT).
- Inconvénient : Cher, Rigide (n'accepte que les données structurées), "Vendor Lock-in".
- Usage : BI (Business Intelligence), Reporting SQL.
Le Lakehouse (terme inventé par Databricks) est une architecture qui combine le meilleur des deux mondes (3.1).
Objectif : Avoir la performance et la fiabilité (ACID) d'un Data Warehouse...
...directement sur les fichiers ouverts (Parquet) et le stockage bon marché d'un Data Lake (S3).
La technologie qui permet le "Lakehouse" est Delta Lake (3.3).
Delta Lake est un format de stockage (storage layer) open-source (base de Databricks) qui apporte les garanties ACID (fiabilité) aux Data Lakes (S3).
Architecture (Parquet + Logs JSON)
Une "Table Delta" (sur S3) n'est pas 1 fichier, c'est un dossier :
/my-delta-table/
ââ 0000.parquet
ââ 0001.parquet
ââ _delta_log/
ââ 00000.json (Log: "Ajout 0000.parquet")
ââ 00001.json (Log: "Ajout 0001.parquet")
- Fichiers
.parquet: Les données (Data), format colonne (rapide). - Dossier
_delta_log/: Le Transaction Log (Journal). C'est le "cerveau". Il liste (JSON) quelles versions de quels fichiers.parquetconstituent la table Ă un instant T.
Fonctionnalités Clés (grùce au Log)
- Transactions ACID : (
COMMIT/ROLLBACK) (L'Ă©criture est "atomique" : on Ă©crit le Parquet, *puis* on Ă©crit le.json(le "commit") qui l'active). UPDATE/DELETE/MERGE: Permet de faire du SQL DML (UPDATE) sur un Data Lake (impossible sur Parquet pur).- Time Travel (Voyage temporel) : Permet de requĂȘter la table "telle qu'elle Ă©tait hier" (
SELECT * FROM table TIMESTAMP AS OF '...'). - Z-Ordering : (Optimisation) Technique de "colocalisation" des données (similaire à un index multi-colonnes).
Unity Catalog (UC) est la solution de gouvernance (governance) unifiée de Databricks. C'est le "gardien" de toutes les données et de l'IA.
Le ProblĂšme (Avant UC)
Avant UC, chaque "Workspace" (espace de travail) Databricks avait son propre Metastore (Hive). Si 10 équipes avaient 10 workspaces, il était impossible de partager (ou de sécuriser) les tables entre elles.
Solution (UC)
UC est un Metastore Centralisé (Couche 0) au niveau du Compte (Account) Databricks, qui s'applique à tous les Workspaces.
Fonctionnalités (Centralisées)
- Central Metastore : 1 seul endroit pour définir les Bases/Tables.
- Sécurité (ACLs) : (Voir 4.3) Gestion fine des permissions (
GRANT). - Data Lineage (Traçabilité) : (Automatique) (Voir 4.3) Trace le flux (Table A -> Job -> Table B).
- Data Discovery : Moteur de recherche pour trouver des assets.
- Audit : Qui a accédé à quoi ?
Unity Catalog (UC) introduit un espace de noms (namespace) Ă 3 niveaux (standard SQL), qui remplace l'ancien (Hive) Ă 2 niveaux.
-- Syntaxe (SQL) : SELECT * FROM [CATALOG].[SCHEMA].[TABLE]
| Niveau | Description | Exemple (Usage) |
|---|---|---|
CATALOG (Catalogue) | Le plus haut niveau. Contient des Schémas. | prod, dev, staging (Environnements) finance_catalog (Business Unit) |
SCHEMA (SchĂ©ma) | (Ăquiv. "Base de DonnĂ©es" (Database)) Contient des Tables/Vues. | prod.sales, prod.marketing |
TABLE / VIEW / FUNCTION | L'objet de données (Delta Lake) | prod.sales.invoices (Factures) |
Sécurité (ACLs SQL)
UC gĂšre toutes les permissions (ACLs) en utilisant des commandes SQL standard (GRANT / REVOKE).
Cela centralise la sécurité (avant, il fallait gérer les "IAM roles" S3 ET les ACLs du Workspace...).
-- (Exemple : SQL) -- (Donne le droit de 'lire' (SELECT) la table 'invoices' -- au groupe 'analystes_finance') GRANT SELECT ON TABLE prod.sales.invoices TO `analystes_finance`; -- (Donne le droit d'utiliser le catalogue 'dev') GRANT USE_CATALOG ON CATALOG dev TO `developpeurs`; -- (Donne le droit de créer des tables dans le schéma 'sandbox') GRANT CREATE_TABLE ON SCHEMA dev.sandbox TO `developpeurs`;
Data Lineage (Traçabilité)
Puisque UC (le Metastore) voit toutes les requĂȘtes (SQL, PySpark, DLT) et toutes les tables, il peut automatiquement tracer le lignage (lineage) des donnĂ©es.
Objectif : RĂ©pondre Ă la question "D'oĂč vient cette donnĂ©e ?".
(Exemple de graphe de lignage)
[Table: "bronze_raw_logs"]
â
⌠(Job: "clean_logs_job")
[Table: "silver_clean_logs"]
â
⌠(Job: "aggregate_sales")
[Table: "gold_sales_report"]
â
⌠(Dashboard: "Rapport Ventes")
[Dashboard]
Usage : Analyse d'impact (Si je change "bronze_raw_logs", qui sera impacté ?).
Le Data Engineer (Ingénieur Données) est la persona "historique" de Databricks. Son rÎle est de construire des pipelines (ETL/ELT) fiables et scalables.
Architecture "Medallion" (Bronze/Silver/Gold)
C'est l'architecture de données standard du Lakehouse (Databricks) :
| Couche | Qualité | Format | Usage |
|---|---|---|---|
| Bronze | Brute (Raw) | (Delta, JSON, CSV) | (Staging) Copie 1:1 de la source. (Historique, "Append-only"). |
| Silver | Nettoyée (Cleaned) | Delta Lake | (Données "propres", filtrées, jointes, dédoublonnées). (Source de vérité pour BI/ML). |
| Gold | AgrĂ©gĂ©e (Aggregated) | Delta Lake | (Tables "Business", agrĂ©gĂ©es, prĂȘtes pour la BI). (ex: "Ventes_par_Mois_Region"). |
Le Data Engineer utilise les Notebooks (5.2), Jobs (5.3), et DLT (7.2) pour transformer les données de Bronze -> Silver -> Gold.
Le Notebook (similaire Ă Jupyter) est l'IDE interactif principal de Databricks (pour Data Engineering & Data Science).
Multi-Langage
Un mĂȘme Notebook peut mĂ©langer plusieurs langages (grĂące aux "Magic Commands" : %) :
%python(Défaut) (PySpark)%sql(Spark SQL)%scala%r
Exemple (PySpark & SQL)
# (Cellule 1 - Python/PySpark)
# (Lit les données brutes (JSON) depuis S3)
df_bronze = spark.read.json("s3://my-bucket/raw/logs.json")
df_bronze.createOrReplaceTempView("logs_bronze")
# (Cellule 2 - SQL) # (Utilise Spark SQL sur la "Vue" (DataFrame) # pour transformer les données) %sql CREATE OR REPLACE TEMP VIEW logs_silver AS SELECT user_id, action, timestamp FROM logs_bronze WHERE user_id IS NOT NULL;
# (Cellule 3 - Python/PySpark)
# (Reprend le DataFrame Silver)
df_silver = spark.table("logs_silver")
# (Sauvegarde en format Delta Lake (ACID))
df_silver.write.format("delta").saveAsTable("prod.analytics.logs_silver")
Un "Notebook" (5.2) est pour le développement interactif. Un Job (Tùche) est pour la production (automatisée).
Les "Jobs" (ou "Workflows") sont l'orchestrateur intégré de Databricks (similaire à Airflow, Prefect).
Fonctionnalités
- Scheduling : (Planification) Ex: "Lancer ce Notebook tous les jours Ă 2h du matin".
- Multi-Task (DAGs) : Permet de créer des DAGs (Directed Acyclic Graphs) (flux de travail) :
- (Tùche A -> Tùche B (si A réussit) -> Tùche C)
- Types de TĂąches : Notebook, Script Python, DLT Pipeline, RequĂȘte SQL, ...
- Clusters : (Voir 2.3) Utilise des "Job Clusters" (éphémÚres, moins chers) plutÎt que des "All-Purpose Clusters".
- Alerting : Alertes sur Ăchec/SuccĂšs.
Le Data Analyst (Analyste BI) est la persona "SQL". Son objectif est de consommer les données (préparées par les Data Engineers) pour créer des rapports et des dashboards (BI).
ProblÚme (Avant) : Les analystes SQL (ex: Tableau, Power BI) ne pouvaient pas interroger les Data Lakes (S3) (lents, non-ACID). Ils devaient copier (dupliquer) les données (Silver/Gold) du Lake vers un Data Warehouse (Snowflake, Redshift).
Solution (Lakehouse) :
- Les données restent dans le Lakehouse (Delta Lake).
- L'analyste utilise Databricks SQL (6.2) (le moteur Photon) pour requĂȘter ces tables Delta directement, avec une performance Ă©gale (ou supĂ©rieure) Ă un Data Warehouse.
Databricks SQL (DBSQL) est l'"espace de travail" (Persona) dédié aux analystes SQL. Il fournit un ensemble d'outils optimisés pour le SQL / BI.
Composants
- SQL Warehouses (EntrepĂŽts SQL) :
- (Le "Compute" pour SQL). Ce sont des Clusters Databricks (2.3) optimisĂ©s (moteur Photon) pour les requĂȘtes SQL (BI) Ă faible latence.
- (Existent en "Pro" ou "Serverless" (7.3)).
- SQL Editor :
- Un Ă©diteur SQL (type "requĂȘteur") dans l'UI web (avec auto-complĂ©tion).
- Dashboards :
- Un outil de BI (lĂ©ger) intĂ©grĂ© (similaire Ă Grafana/Looker Studio) pour crĂ©er des visualisations/dashboards (basĂ©s sur les requĂȘtes SQL).
- Connecteurs (ODBC/JDBC) :
- Permet aux outils BI externes (Tableau, Power BI) de se connecter au SQL Warehouse (comme s'il s'agissait d'une base SQL standard).
Le Data Scientist est la persona "ML/AI". Son objectif est de lire les données (Silver) pour entraßner (train) des modÚles de Machine Learning (IA).
Le "Databricks Runtime for ML"
Databricks fournit un "Runtime" (Image de Cluster) spécifique pour le ML. C'est une version de Databricks (Spark) pré-installée avec toutes les librairies (Python) de Data Science :
- PyTorch
- TensorFlow / Keras
- Scikit-learn
- XGBoost
- (Et les drivers GPU (CUDA) optimisés)
Outils (Intégrés)
- Notebooks (5.2) : Pour l'exploration (EDA) et l'entraĂźnement.
- MLflow (7.1) : (Intégré) Pour le suivi (tracking) des expériences.
MLflow (open-source, créé par Databricks) est une plateforme de MLOps (DevOps pour le ML) qui gÚre le cycle de vie (lifecycle) complet du Machine Learning.
Il est intégré nativement dans les Notebooks Databricks.
Composants
| Composant | Description |
|---|---|
| MLflow Tracking | (Le cĆur) L'API (mlflow.log_param, mlflow.log_metric) qui enregistre les "expĂ©riences" (ex: les hyperparamĂštres (input) et le score (output) de chaque entraĂźnement). |
| MLflow Models | Un format "standard" pour packager (empaqueter) les modÚles (ex: un MLproject file) pour un déploiement reproductible. |
| MLflow Registry | (Le "Git" des modÚles) Un registre de modÚles centralisé (ex: "ModÚle A v1" (Staging), "ModÚle A v2" (Production)). |
DLT (Delta Live Tables) est un framework ETL/ELT déclaratif. C'est l'outil "moderne" pour créer les pipelines Bronze/Silver/Gold (5.1).
Approche "Impérative" (Jobs Notebooks)
L'ingénieur doit tout gérer (le "Comment") :
- (Job 1) Lire S3, écrire Bronze.
- (Job 2) Lire Bronze, nettoyer, écrire Silver.
- (Job 3) Lire Silver, agréger, écrire Gold.
- Gérer l'orchestration (le DAG), le "retry" (nouvelle tentative), le "backfill" (rattrapage)... (Complexe).
Approche "Déclarative" (DLT)
L'ingénieur ne définit que le "Quoi" (les transformations) en SQL ou Python (avec des "décorateurs" @dlt).
-- (Fichier DLT SQL)
-- 1. Table Bronze (Streaming depuis S3)
CREATE STREAMING LIVE TABLE raw_logs
AS SELECT * FROM cloud_files("s3://...", "json");
-- 2. Table Silver (Nettoyage)
CREATE STREAMING LIVE TABLE clean_logs
(CONSTRAINT user_id_ok EXPECT (user_id IS NOT NULL))
AS SELECT ... FROM STREAM(LIVE.raw_logs)
-- 3. Table Gold (Agrégation)
CREATE LIVE TABLE gold_report
AS SELECT ... FROM LIVE.clean_logs GROUP BY ...
Résultat : Databricks analyse ce SQL, construit le DAG (Bronze -> Silver -> Gold), et gÚre automatiquement le scaling, les retries, le checkpointing, et l'assurance qualité (CONSTRAINT).
"Serverless" (dans Databricks) est une option de "Compute" (Calcul) qui supprime la gestion des clusters du Data Plane (1.2).
Mode "Classic" (Data Plane dans votre VPC)
ProblÚme : Quand vous démarrez un SQL Warehouse (6.2) "Classic", Databricks (Control Plane) doit provisionner (démarrer) des VMs (EC2) dans votre VPC (Data Plane).
Inconvénient : "Cold Start" (Démarrage à froid). Le démarrage du cluster prend 3 à 10 minutes. (Inacceptable pour la BI interactive).
Mode "Serverless" (Data Plane chez Databricks)
Quand vous utilisez "DBSQL Serverless" :
Le "Compute" (le SQL Warehouse) ne tourne plus dans votre VPC. Il tourne sur une flotte "chaude" (Hot) de serveurs managés par Databricks (dans le Control Plane).
- Avantage : Démarrage Instantané (1-3 secondes).
- Avantage : Zéro gestion (pas de quotas EC2, pas de config VPC).
- Inconvénient (Perçu) : Le "Compute" (Photon) et le "Stockage" (S3) ne sont plus "colocalisés" (le trafic passe par un "Secure Gateway").
