Selected Work
Case Study / 004Data Systems · May 2025

Airspace Congestion Monitoring

Airspace congestion has to be understood while it's happening, not after the fact — which means ingesting live flight telemetry and scoring risk in-stream, not in a nightly batch job.

A streaming pipeline that ingests flight telemetry from the OpenSky API (plus historical replay) into three Kafka topics — flight-stream, flight-metrics, flight-aggregates — processes it in Spark Structured Streaming for risk scoring, anomaly detection, and spatial grid aggregation over 30-second windows sliding every 10 seconds, and fans results out to InfluxDB for real-time queries, MongoDB for historical lookups, and HDFS for batch archival, visualized in a live Streamlit dashboard.

ILLUSTRATIVE — NOT OBSERVED FLIGHT DATA

Verified figures

475,000+ recordsgenerated historical dataset modeling realistic OpenSky-shaped traffic, used for testing at volume — live ingestion pulls the real OpenSky API
30s / 10swindow length / slide interval — Spark Structured Streaming risk scoring and anomaly detection
OpenSky APIliveHistorical replaytest dataKafka (Redpanda)3 topics (flight-*)Spark Structured StreamingInfluxDBreal-timeMongoDBhistoricalHDFSbatch archiveStreamlit dashboard

Dashed lines mark the historical/test-data paths (replay, HDFS archive) — everything else is the live path. Each storage destination is an independent branch from Spark, not a chain. Full diagram below has the same relationships plus exact edge labels.

FIG. 10Stream processing architecture — OpenSky ingestion to Streamlit

Stack

Apache Spark / Kafka / InfluxDB / MongoDB / HDFS / Streamlit / Python