← volver a proyectos
Proyecto

Streaming de satélites en tiempo real — Databricks

Posiciones orbitales calculadas localmente con el algoritmo SGP4 a partir de TLEs, publicadas a Azure Event Hubs y procesadas con Spark Structured Streaming en un Lakeflow Pipeline serverless (Bronze → Silver → Gold), servidas en un AI/BI Dashboard nativo con refresh en vivo. Tercer proyecto de la serie, después del pipeline batch y el agente conversacional: cierra el combo con streaming real.

Arquitectura
SGP4 (productor)
Event Hubs
Bronze
Silver
Gold
AI/BI Dashboard

Productor local (SGP4 sobre TLEs) → Azure Event Hubs (endpoint Kafka) → Lakeflow Pipeline serverless en Databricks con Structured Streaming: Bronze (crudo) → Silver (dedupe + tipado) → Gold (agregaciones en ventana) → AI/BI Dashboard nativo leyendo de Gold, con "Embed data" desactivado para que cada refresh traiga datos nuevos en vivo. Infra completa en Azure (Event Hubs, Databricks Premium, Key Vault) desplegada con Terraform.

Decisiones de ingeniería
Stack
Databricks Azure Event Hubs Structured Streaming Terraform SGP4 AI/BI Dashboard
Ver repo en GitHub
El problema
Un pipeline de streaming necesita un productor de eventos real para probar backpressure, ventaneo y agregaciones tal como se comportan en producción — no un mock ni algo atado a los rate limits de una API externa.
La solución
Los TLE orbitales cambian poco, pero la posición exacta en cualquier instante se calcula con SGP4 — corrido localmente cada pocos segundos, ese cálculo es el productor de eventos real del proyecto. Misma arquitectura que cualquier streaming real: productor → broker → consumer incremental → agregaciones en ventana.
demo en video
Qué evalúa esto
Pregunta típica de entrevistaDónde está la respuesta
¿Cómo generás eventos reales sin depender de un rate limit externo?producer/main.py, SGP4 corrido localmente cada 5s sobre TLEs
¿Cómo conectás el productor al pipeline de streaming?Azure Event Hubs (endpoint Kafka) → Structured Streaming en un Lakeflow Pipeline serverless
¿Cómo evitás duplicados en streaming?Notebook Silver: dedupe + tipado antes de escribir
¿Cómo hacés agregaciones en tiempo real?Notebooks Gold: window() de 2 minutos sobre el stream, por categoría y por trayectoria
¿Cómo servís resultados en vivo sin frontend propio?AI/BI Dashboard nativo sobre Gold, "Embed data" off para refresh real
¿Cómo manejás infra y secrets?Terraform (Event Hubs, Key Vault, Databricks Premium) + secret scope respaldado por Key Vault, nunca connection strings hardcodeadas