How kareemmas3ud/fc26-analytics works
FC 26 Live Match Analytics simulates match telemetry, streams it through Kafka and Spark into Cassandra, and combines live data with historical Wyscout analytics in a Streamlit dashboard. The principal workflow is dashboard match setup → simulator roster lookup and event generation → Kafka → Spark’s raw and windowed streams → Cassandra → dashboard visualization. Separately, CSV ingestion populates ClickHouse dimensions and historical events for roster lookup, name resolution, and historical comparisons. The sampled sources support these connections; the dashboard excerpt is partial, so unsampled details are omitted.
Main entry points: app.py Live Dashboard · simulator.py Match Simulator · streaming_pipeline.py Spark Streaming · wyscout_data Wyscout CSVs
Components 12
Live Match
- Match Config
app.py - Match Simulator
simulator.py
Stream Processing
- Kafka Broker
- Spark Streaming
streaming_pipeline.py - Cassandra Speed Layer
- Speed Schema Setup
setup_cassandra.py
Historical Analytics
- ClickHouse Analytics
- Wyscout CSVs
wyscout_data - Event Ingestion
batch_ingestion.py - Dimension Ingestion
ingest_dimensions.py
Dashboard
- Live Dashboard
app.py
Other components
- Operator
Connections 15
- Operator → Live Dashboard: configures match
- Live Dashboard → Match Config: writes setup
- Match Simulator → Match Config: reads setup
- Match Simulator → ClickHouse Analytics: looks up rosters
- Match Simulator → Kafka Broker: publishes events
- Kafka Broker → Spark Streaming: streams events
- Spark Streaming → Cassandra Speed Layer: writes raw events
- Spark Streaming → Cassandra Speed Layer: upserts window stats
- Live Dashboard → Cassandra Speed Layer: queries live data
- Live Dashboard → ClickHouse Analytics: queries analytics
- Wyscout CSVs → Event Ingestion: supplies events
- Wyscout CSVs → Dimension Ingestion: supplies dimensions
- Event Ingestion → ClickHouse Analytics: loads event history
- Dimension Ingestion → ClickHouse Analytics: loads dimensions
- Speed Schema Setup → Cassandra Speed Layer: creates tables