Guide Revision Data Engineer
Guide Revision Data Engineer
Guide de revision
Objectif Data Engineer
Synthese structurée de ton document sur le monde de la donnée, enrichie avec
les connaissances indispensables pour concevoir, industrialiser et maintenir des
pipelines de données fiables.
Objectif de revision : comprendre les concepts, savoir les relier entre eux, être capable de justifier des choix techniques et
repérer les points critiques en production.
1. Fondamentaux 2. Persistance
Donnée, information, métadonnées, qualité, granularité, Fichiers, bases relationnelles, NoSQL, index, transactions.
formats.
5. Intégration 6. Production
ETL, ELT, connecteurs, gateways, virtualisation, batch, Orchestration, qualité, sécurité, observabilité, CI/CD,
streaming. roadmap.
Fondamentaux de la donnée
Avant de parler de pipelines et d'outils, il faut maîtriser le vocabulaire qui décrit la donnée elle-même.
Présentation A quoi cela ressemble ? Couleur, police, mise en page, contraste Utile pour les documents, interfaces, rendus
visuels.
Physique Comment c'est stocké ? Type, taille, encodage, format, résolution Impacte le stockage, la performance, la
compatibilité.
Structurelle Comment c'est Colonnes, tables, balises, objets, relations Permet le parsing, la validation et la modélisation.
organisé ?
Fonctionnelle Que peut-on faire avec ? Rechercher, filtrer, agréger, modifier, Relie la donnée à son usage métier.
partager
Réflexe de data engineer : pour chaque donnée, demander : source ? format ? type ? grain ? fraîcheur ? qualité ?
propriétaire ? droit d'accès ? usage final ?
CSV Tabulaire, texte Simple, lisible, compatible Excel et Pas de types robustes, ambiguïtés de Echange simple, export,
Python séparateur/encodage, lourd petit dataset
JSON Semi-structuré, objets Souple, proche des API web, imbriqué Verbeux, moins efficace en gros API, événements,
clé-valeur volumes configuration
XML Hiérarchique avec Schéma explicite, très structuré Verbeux, parsing parfois lourd Systèmes anciens,
balises échanges normés
Parquet Tabulaire colonnaire, Compression, types conservés, Non lisible directement, besoin d'outils Data lake, Spark, analytics,
binaire lecture partielle de colonnes gros volumes
Avro Row-based binaire Adapté aux messages et à l'évolution Moins performant pour requêtes Kafka, streaming,
avec schéma de schéma analytiques colonnaires sérialisation
ORC Colonnaire optimisé Très efficace dans l'écosystème Hive/ Moins universel que Parquet selon les Hadoop, Hive, analytique
Hadoop stacks
Relationnelle Tables, lignes, PostgreSQL, MySQL, SQL, cohérence, transactions, Schéma plus rigide, scaling distribué
colonnes, clés Oracle, SQL Server jointures plus délicat
Clé-valeur clé -> valeur Redis, DynamoDB Très rapide, cache, sessions Requêtes complexes limitées
Documents JSON/BSON MongoDB, Firestore Souple, proche API, données Cohérence et jointures moins
imbriquées naturelles
Colonnes Colonnes/familles de Cassandra, HBase, Très gros volumes, scalabilité Modélisation orientée requêtes
distribuées colonnes Bigtable horizontale
Graphes Noeuds et relations Neo4j, Neptune Relations complexes, Moins adapté aux données tabulaires
recommandations, fraude simples
Temporelles Données horodatées InfluxDB, TimescaleDB, Mesures, séries temporelles, Usage spécialisé
Prometheus monitoring
Entrepôts Analytique, colonnes, BigQuery, Snowflake, OLAP, BI, agrégations massives Pas fait pour les transactions
SQL Redshift, Synapse quotidiennes
Vectorielles Embeddings FAISS, Milvus, Pinecone, Similarité, RAG, recherche Complément d'une architecture, pas
numériques Weaviate sémantique remplacement global
Relationnel vs NoSQL : le relationnel impose une structure stricte et garantit fortement la cohérence. Le NoSQL offre une
modélisation plus flexible pour les volumes, la variété et la distribution, mais certaines garanties doivent être gérées par
l'application ou par la conception.
Clé étrangère Référence à une clé primaire d'une autre table. Crée un lien entre deux tables.
Intégrité référentielle Une clé étrangère doit pointer vers une donnée existante. Evite les commandes sans client existant.
Dénormalisation Regrouper des données pour accélérer la lecture. Fréquent en OLAP, NoSQL, data marts.
B-Tree Arbre équilibré trié =, >, BETWEEN, ORDER BY Index généraliste le plus courant
Bitmap Vecteurs de 0/1 par valeur Colonnes à faible cardinalité : statut, sexe, Mauvais pour valeurs très
catégorie distinctes
Hachage Fonction de hachage vers un Recherche exacte : id, email Pas adapté aux intervalles ou tris
emplacement
Compromis : un index accélère les lectures mais ralentit les écritures, car l'index doit être maintenu à chaque insertion, mise
à jour ou suppression.
OLTP OLAP
Online Transaction Processing. Système qui enregistre Online Analytical Processing. Système qui analyse des
les opérations du quotidien : commande, paiement, volumes importants : ventes mensuelles, reporting,
inscription, réservation. indicateurs, BI.
Priorités : transactions, cohérence, faible latence, Priorités : lectures massives, agrégations, historique,
écritures fréquentes. requêtes analytiques.
Fact Ventes
Dim Client -> <- Dim Produit <- Dim Date
montant, quantité
Une table de faits contient les mesures analysables : montant, quantité, durée. Les dimensions décrivent les axes d'analyse :
client, produit, date, magasin, région.
Pour devenir data engineer : entraîne-toi à écrire des requêtes avec jointures, agrégations, fenêtres SQL, CTE,
dédoublonnage et contrôles de qualité.
HDFS Système de fichiers distribué Découpe les fichiers en blocs, les répartit et les réplique.
MapReduce Modèle historique de traitement Map traite localement, Reduce agrège les résultats.
YARN Gestionnaire de ressources Alloue CPU/mémoire et planifie les jobs sur le cluster.
Hive SQL-like sur Hadoop Permet d'interroger de grands volumes avec HiveQL.
Pig Scripts de transformation Pig Latin décrit des traitements étape par étape.
Spark est un moteur de traitement distribué utilisé pour le Composants : Spark Core, Spark SQL, Structured
batch, le SQL, le streaming, le machine learning et les Streaming, MLlib, GraphX.
graphes.
Objets clés : DataFrame, Dataset, RDD, driver, executors,
Il est souvent plus flexible que MapReduce, notamment cluster manager.
grâce au traitement en mémoire.
ventes = [Link]("s3://lake/bronze/ventes/")
ca = [Link]("mois", "categorie").agg([Link]("montant").alias("ca"))
[Link]("overwrite").parquet("s3://lake/gold/ca_mensuel/")
A retenir : en cas de partition réseau, il faut souvent arbitrer entre cohérence forte et disponibilité. Les systèmes distribués
sont toujours des compromis.
Data Données structurées, préparées pour SQL, BI, performance, gouvernance Moins flexible pour données brutes variées
Warehouse analyse
Data Lake Stockage brut de données variées Flexible, économique, conserve le Risque de “data swamp” si mal gouverné
brut
Lakehouse Combine lake et warehouse Formats ouverts, tables fiables, BI Demande une architecture et une gouvernance
+ ML solides
Architecture Medallion
Sources Produisent les données CRM, ERP, bases SQL, logs, API, fichiers
Ingestion Récupère et charge les données Airbyte, Fivetran, Kafka Connect, scripts Python
Exposition Rend les données utilisables Power BI, Tableau, Looker, API, notebooks
Databricks
Databricks est une plateforme cloud de données et d'IA, très liée à Spark, qui permet de construire des pipelines, requêtes SQL,
notebooks, workflows, modèles ML et architectures lakehouse. Les notions à connaître : Spark, Delta Lake, notebooks, jobs/
workflows, Unity Catalog, lakehouse.
Modèles d'intégration
Modèle Définition Exemple
Diffusion Envoyer une donnée vers plusieurs systèmes Une commande vers CRM, facturation, livraison
Migration Déplacer durablement vers un nouveau système Ancien CRM -> nouveau CRM
Synchronisation Maintenir plusieurs systèmes cohérents Adresse client identique dans CRM et facturation
Agrégation Regrouper plusieurs sources pour une vue globale CA total web + magasins + marketplace
Corrélation Mettre en relation pour détecter un lien Météo + ventes pour analyser une tendance
Connecteur Permet à un outil de parler à une source/destination Connecteur Salesforce, PostgreSQL, S3, API REST
ODBC Interface standard générale pour se connecter à des bases Excel -> ODBC -> Oracle
JDBC Interface Java pour bases de données Application Java -> JDBC -> PostgreSQL
Data Gateway Pont sécurisé entre cloud et source locale/protégée Power BI Cloud -> Gateway -> base SQL interne
Données virtuelles
Le modèle de données virtuelles crée une couche logique permettant d'interroger plusieurs sources sans recopier physiquement
toutes les données. C'est utile pour une vue unifiée rapide, mais les performances dépendent des systèmes sources.
ETL ELT
Extract -> Transform -> Load Extract -> Load -> Transform
On transforme avant de charger dans la cible. On charge d'abord les données brutes, puis on transforme
Historiquement fréquent dans les architectures data dans le warehouse/lakehouse. Très fréquent dans les
warehouse classiques. architectures cloud modernes.
Adapté à Systèmes traditionnels, contraintes fortes avant stockage Cloud, data warehouse moderne, lakehouse
Risque Pipeline rigide, transformations difficiles à rejouer Accumulation de données brutes si mal gouverné
Batch Traitement par lots à intervalles Minutes, heures, Rapport quotidien, sauvegarde, Airflow, dbt, Spark batch, SQL
réguliers jours calcul mensuel
Temps Réagir presque immédiatement à un Très faible Paiement, alerte fraude, réservation API, Kafka, bases rapides,
réel événement fonctions cloud
Streaming Traiter un flux continu d'événements Faible à très faible Logs, capteurs IoT, clickstream, Kafka, Flink, Spark Structured
monitoring Streaming
Topic Kafka
Producer -> -> Consumers
partitions
Question clé : as-tu besoin de fraîcheur à la seconde, à la minute, à l'heure ou au jour ? Plus la latence visée est faible, plus
l'architecture est complexe et coûteuse.
Vocabulaire
Notion Définition
Logs et failover
Log Failover
Trace enregistrée par un système : démarrage, erreur, Basculement vers un système de secours quand le système
durée, volume traité, requête API, statut de job. principal tombe en panne.
Un pipeline sans logs est difficile à diagnostiquer. Essentiel pour haute disponibilité et continuité de service.
Règle de production : un pipeline doit dire ce qu'il fait, quand il échoue, pourquoi il échoue et comment le relancer sans
créer d'effets de bord.
Dimensions de qualité
Dimension Question Test possible
Complétude Les valeurs obligatoires sont-elles présentes ? Non-null sur id_client, date, montant
Validité Les valeurs respectent-elles un domaine ? statut dans une liste autorisée
Cohérence Les relations sont-elles correctes ? customer_id existe dans la table clients
models:
- name: dim_customers
columns:
- name: customer_id
data_tests:
- unique
- not_null
- name: country
data_tests:
- accepted_values:
values: ['FR', 'ES', 'DE']
Gouvernance
• Catalogue : inventaire des tables, colonnes, owners, • Data owner/steward : responsable métier ou technique de
définitions. la donnée.
• Lineage : suivi des transformations de la source jusqu'au • Classification : publique, interne, confidentielle, sensible.
dashboard. • RGPD : minimisation, finalité, droit d'accès, anonymisation/
• Data contracts : accord explicite sur schéma, qualité et pseudonymisation.
fréquence.
Sécurité
Point Bonne pratique
Secrets Ne jamais stocker mots de passe dans le code ; utiliser un gestionnaire de secrets.
Fiabilité Taux d'échec, retries, durées, tâches bloquées Le pipeline fonctionne-t-il tous les jours ?
Fraîcheur Age de la dernière donnée, retard de flux Les utilisateurs voient-ils des données récentes ?
Qualité Tests échoués, valeurs nulles, doublons Peut-on faire confiance aux résultats ?
Volume Lignes traitées, taille fichiers, événements/sec Y a-t-il une rupture ou un pic anormal ?
Coût CPU, RAM, stockage, requêtes, egress Le traitement coûte-t-il trop cher ?
Performance : réflexes
• SQL : filtrer tôt, éviter SELECT *, vérifier les plans, indexer les • Spark : limiter les shuffles, gérer le skew, ajuster les
clés utiles. partitions.
• Partitionnement : partitionner par date ou clé fréquemment • Warehouse : matérialiser les tables très utilisées, surveiller
filtrée. les scans.
• Formats : utiliser Parquet/Delta pour l'analytique. • Cloud : éteindre les clusters inutilisés, choisir la bonne taille
• Fichiers : éviter trop de petits fichiers dans un data lake. de ressources.
• Cache : l'utiliser pour données/résultats réutilisés, mais gérer
l'expiration.
Cache
But : garder temporairement des données ou résultats Risque : donnée périmée si le cache n'est pas invalidé.
fréquents dans un stockage rapide.
Concepts : cache hit, cache miss, TTL, invalidation.
Avantage : moins de latence et moins de charge sur la
source.
Git Branches, commits propres, pull requests, résolution de conflits Travailler en équipe et historiser les changements.
Python Scripts propres, fonctions, environnements, packages, tests Ingestion, automatisation, APIs, Spark/Pandas.
SQL Jointures, agrégations, CTE, fenêtres, optimisation Langage central de transformation analytique.
Cloud Stockage objet, IAM, compute, réseau, coûts La majorité des stacks data modernes sont cloud ou hybrides.
Sources PostgreSQL commandes, Stripe paiements, API livraison, logs web Sources métier hétérogènes.
Ingestion Airbyte/Fivetran pour SaaS, CDC pour base, Kafka pour événements Automatiser et limiter le code maison.
Stockage brut Data lake en Parquet partitionné par date Historisation, coût, reprocessing.
Transformation dbt pour SQL analytique, Spark pour gros volumes Modèles versionnés et scalabilité.
Qualité Tests not_null, unique, relationships, contrôles de volume Empêcher des dashboards faux.
1. SQL solide Jointures, agrégations, fenêtres, optimisation 20 requêtes sur un dataset e-commerce
2. Python data Scripts, Pandas, API, fichiers, tests Extracteur API -> CSV/Parquet
6. Big Data Spark, Parquet, partitionnement Traitement PySpark sur gros CSV
7. Cloud/Lakehouse Stockage objet, warehouse, droits Bronze/Silver/Gold sur cloud ou local simulé
Monitoring
Window functions Calculer sans perdre le détail ligne rang, moyenne mobile, détection de doublons
EXPLAIN Comprendre le plan d'exécution Identifier scan complet, mauvais join, index non utilisé
SCD Type 2 On conserve l'historique avec dates de validité Suivre l'évolution d'un client, segment, adresse, statut
SCD Type 3 On garde une valeur courante et une ancienne valeur Historique très limité
Réflexe entretien : préciser le grain d'une table de faits avant de parler de mesures. Exemple : une ligne = une ligne de
commande, et non une commande complète.
Bibliothèques utiles
Besoin Outils Python Exemple
import logging
from pathlib import Path
import requests
import pandas as pd
[Link](level=[Link])
def main():
rows = extract("[Link]
df = transform(rows)
load(df, "data/bronze/[Link]")
[Link]("loaded %s rows", len(df))
if __name__ == "__main__":
main()
Production : ne jamais mettre de secret dans le code. Utiliser des variables d'environnement ou un secret manager.
Concepts fondamentaux
Concept Définition Impact pratique
Driver Processus qui pilote l'application Spark Ne doit pas collecter trop de données localement
Executors Processus qui exécutent les tâches sur le cluster Consomment CPU/RAM, lisent et écrivent les données
DataFrame Table distribuée avec colonnes nommées API principale pour PySpark moderne
Lazy evaluation Spark construit un plan sans exécuter immédiatement Une action déclenche le calcul
Transformation Opération qui produit un nouveau DataFrame filter, select, join, groupBy
Partition Morceau de données traité en parallèle Trop peu = peu de parallélisme ; trop = overhead
Anti-pattern Spark
Anti-pattern Pourquoi c'est mauvais Alternative
[Link]() puis traitement Python Ramène tout sur le driver Utiliser fonctions Spark distribuées
UDF Python partout Moins optimisable par Spark Fonctions natives Spark SQL
Ecrire des milliers de petits fichiers Lenteur de lecture et metadata overhead Compaction/coalesce/repartition
Joindre deux grosses tables sans stratégie Shuffle massif Broadcast petite table, partitionnement, filtrage
Vocabulaire Kafka
Notion Définition A retenir
Event/message Fait métier : commande créée, paiement validé Contient clé, valeur, timestamp, headers
Offset Position d'un message dans une partition Permet la reprise après panne
Consumer group Groupe de consumers partageant les partitions Permet de scaler la lecture
Schema Registry Gestion des schémas d'événements Evite de casser les consommateurs
Garanties de livraison
Garantie Définition Risque
Exactly once Une fois exactement, selon conditions techniques strictes Plus complexe à garantir de bout en bout
Important : même avec Kafka, il faut concevoir les consommateurs pour gérer les doublons. L'idempotence reste
indispensable.
Stockage objet S3 Cloud Storage ADLS / Blob Storage Base d'un data lake
Traitement Spark EMR / Glue Dataproc Synapse Spark / HDInsight Calcul distribué
Orchestration MWAA / Step Functions Cloud Composer Data Factory Planifier et surveiller
Schema evolution
Data engineer mature : il ne subit pas les changements de sources. Il met en place contrats, tests, alertes et
communication avec les producteurs de données.
Questions fréquentes
Question Attendu dans une bonne réponse
ETL ou ELT ? Parler du lieu de transformation, du cloud, du brut conservé, du coût, de la gouvernance.
CSV ou Parquet ? Comparer lisibilité, types, compression, lecture colonnaire, volume, compatibilité.
Batch ou streaming ? Justifier par latence, coût, complexité, garanties, besoin métier.
Comment rendre un pipeline fiable ? Idempotence, tests, logs, retries, alertes, backfill, monitoring, documentation.
Pourquoi un job Spark est lent ? Shuffles, skew, petits fichiers, mauvaise partition, collect, ressources insuffisantes.
Comment garantir la qualité ? Tests automatiques, contrats, contrôles de volumes, réconciliation, lineage.
Qu'est-ce qu'une architecture lakehouse ? Combinaison lake + warehouse, données ouvertes, couches bronze/silver/gold, BI + ML.
Anti-erreurs fréquentes
Erreur Conséquence Correction
Ne pas garder les données brutes Impossible de rejouer proprement Zone Bronze/raw historisée
Pipeline non idempotent Doublons après relance Clés naturelles, upsert, partitions écrasées proprement
Trop de petits fichiers Lenteur dans Spark/lake Compaction et tailles de fichiers adaptées