Tous les projets
03Streaming · Spark Structured Streaming

Real-Time Weather Stream

Les événements circulent d'Azure Event Hubs vers Databricks, sont affinés en continu à travers les couches Delta Lake et arrivent dans un rapport Power BI quasiment en temps réel.

5 min

fenêtres d'agrégation

≤ 20 min

de latence jusqu'à Power BI

3

couches Delta dans Unity Catalog

Plateforme

Azure Databricks

Stack

  • Azure Event Hubs
  • Azure Databricks
  • Spark Structured Streaming
  • Delta Lake
  • Unity Catalog
  • Power BI

Contexte

Dans ce projet, j'ai construit un pipeline scalable avec Azure Event Hubs et Databricks pour traiter des données en streaming quasiment en temps réel. Des flux d'événements issus de sources comme Kafka ou des objets connectés sont ingérés dans Event Hubs puis traités avec Spark Structured Streaming, avant d'être stockés dans un lakehouse Delta selon l'architecture Medallion.

Bronze conserve les événements bruts pour la traçabilité, Silver les nettoie et les structure pour les requêtes, et Gold les agrège pour l'analyse — une conception qui reste flexible et performante avec de gros volumes de données temps réel.

Enfin, les données sont exposées à Power BI en DirectQuery, pour des dashboards rafraîchis quasiment en temps réel avec une latence maximale de 20 minutes.

Architecture de la solution

  1. Event Hubs
  2. Bronze
  3. Silver
  4. Gold
  5. Power BI
  1. Étape 01Source

    Azure Event Hubs

    J'ai créé une ressource Event Hubs dans un groupe de ressources Azure. Event Hubs constitue la couche d'ingestion, capable d'absorber des flux d'événements à haut débit en temps réel.

    Les événements sont synthétiques, générés avec le Data Explorer d'Event Hubs : des messages JSON représentant chacun un enregistrement sous forme de paires clé-valeur — comme une ligne de table.

  2. Étape 02Atterrissage

    Azure Databricks connecté à Event Hubs

    Un workspace Databricks est créé dans le même groupe de ressources, avec un cluster de calcul pour traiter le flux. La bibliothèque Azure Event Hubs connector est installée sur le cluster pour que Spark Structured Streaming lise les événements efficacement.

  3. Étape 03Bronze

    Démarrage du flux — couche Bronze

    Structure Medallion dans Unity Catalog

    Dans un notebook Databricks, je crée d'abord le catalogue et les schémas bronze, silver et gold pour que les données soient ingérées, traitées et affinées de façon structurée.

    Connexion à Event Hubs

    La connexion est configurée avec le namespace Event Hubs, le nom du hub et la clé d'accès.

    Lecture du flux

    Spark Structured Streaming lit et affiche ensuite les événements entrants.

    Persistance en Delta

    Avec readStream seul, les données ne vivent qu'en mémoire et disparaissent à l'arrêt du flux. Grâce à writeStream, les événements sont persistés dans la couche Bronze au format Delta et restent disponibles pour le traitement et l'analyse.

  4. Étape 04Silver

    Couche Silver — parsing & nettoyage

    En Bronze, le contenu de chaque événement se trouve dans une colonne binaire body. Pour le rendre interrogeable, il faut le décoder et le structurer.

    1. Du binaire à la chaîne

    La colonne body est convertie en chaîne avec cast().

    2. Parsing du JSON

    Un schéma est défini avec StructType et StructField de PySpark, puis from_json() transforme la chaîne en colonnes structurées.

    3. Écriture de la table Silver

    writeStream enregistre les données structurées dans la table Delta streaming.silver.weather, en traitement incrémental : les nouveaux événements arrivent en continu sans écraser l'existant.

  5. Étape 05Gold

    Couche Gold — agrégats sur 5 minutes

    Le flux Silver est agrégé sur des fenêtres de 5 minutes pour produire des indicateurs synthétiques prêts pour le reporting.

    Les agrégats sont persistés dans streaming.gold.weather_summary pour des requêtes efficaces.

  6. Étape 06Orchestration

    Récapitulatif du pipeline

    • →Event Hubs ingère des événements JSON en temps réel, diffusés en continu vers Databricks.
    • →Bronze conserve les événements bruts dans leur forme d'origine.
    • →Silver décode les enregistrements binaires en JSON structuré et extrait les attributs météo comme la température, l'humidité et la vitesse du vent.
    • →Gold calcule des moyennes sur 5 minutes pour chaque indicateur, prêtes pour la visualisation.
  7. Étape 07Restitution

    Rapport Power BI temps réel

    Power BI se connecte via Databricks Partner Connect, qui fournit un connecteur lié au cluster. Power BI interroge directement la couche Gold, et les rapports restent à jour quasiment en temps réel.

    Le rapport présente deux vues : la couche Silver avec les événements nettoyés, et la couche Gold avec les indicateurs agrégés par intervalles de 5 minutes. On filtre par période et on explore la température selon les conditions météo (Cloudy, Partly Cloudy, Sunny).

Synthèse

Ce projet livre un pipeline temps réel complet avec Azure Event Hubs, Databricks et Power BI, en suivant l'architecture Medallion pour transformer des événements bruts en insights.

  • →Bronze — les événements météo JSON issus d'Event Hubs sont stockés tels quels dans une table Delta.
  • →Silver — les contenus binaires sont parsés en colonnes lisibles et typées.
  • →Gold — des agrégats sur 5 minutes de la température, de l'humidité, du vent et des précipitations font ressortir tendances et anomalies.

Livrées à Power BI via Partner Connect, les données alimentent un dashboard interactif avec filtres temporels et analyse par condition — une approche scalable pour les flux de données continus.

Projet suivant · 01

NYC Taxi Analytics

Pipeline batch · Data warehouse