Le pipeline en trois couches
Le brut est persisté avant toute transformation, puis raffiné couche par couche. Chaque étape tourne sur le cluster Spark (master + worker), jamais en local.
Persistance du brut
Chaque parquet est copié octet pour octet vers bronze/<vehicle_type>/<year>/<month>/.
- ingestion idempotente, manifeste auto-réparant
- manifeste JSON cumulé dans bronze/_manifest/
- météo stub : bronze/weather/<year>/
Réconciliation & typage
Schémas legacy (2009), modernes, fhv et fhvhv fusionnés vers un modèle canonique unique.
- suppléments absents avant introduction → null, jamais 0
- horodatages corrompus écartés (fenêtre bornée)
- Parquet partitionné vehicle_type/year/month sur s3a://silver/
Agrégats métier
Un mart JSON par analyse : suppléments, flux, prix/km, activité jour×heure, activité par zone, chronologie mensuelle, météo (en attente).
- s3a://gold/ puis export vers ce site
- agrégats légers → dashboard 100% statique et filtrable
- vérifiable dans la console MinIO (:9001)
make run # ajouter SAMPLE=3 pour ne traiter que 3 fichiers
Vue d'ensemble
Données ingérées depuis /data/raw, traitées sur spark://spark-master:7077. KPI et graphiques réagissent aux filtres globaux.
Chronologie mensuelle
« Comment l'activité évolue-t-elle mois par mois, par type de véhicule ? » Empilements par véhicule, zoom au slider ou à la molette.
Carte des 263 zones TLC
« Où les courses démarrent-elles ? Choroplethe viridis (clair → foncé) sur les polygons officiels des taxi zones. Cliquez une zone pour la mettre au focus : les flux et le panneau de détail se mettent à jour. »
Chargement de la carte des 263 zones…
Évolution des suppléments tarifaires
« Pour chaque supplément apparu progressivement dans le schéma, montrer son évolution dans le temps, par type de véhicule. »
Couleur = supplément · trait plein vs pointillé = véhicule · légende cliquable · filtres globaux actifs.
Flux de prises en charge / déposes
« Visualiser les flux de courses entre zones de départ et d'arrivée. »
Prix au km par année et zone de départ
« Un ridgeline plot montrant l'évolution des prix par km au fil des années, pour une zone de départ donnée. »
Fréquence des courses : jour × heure
« Une fonction qui, pour une année donnée en paramètre, produit une heatmap (jour de la semaine × heure) de la fréquence des courses, pour chaque type de véhicule. »
Distance et pourboire
« Le prix au km s'effondre-t-il sur les longs trajets ? Et le pourboire suit-il les années ? »
Écart de prix selon la météo
« Comparer le prix des courses (par km) selon les conditions météo au moment de la course, par rapport au prix moyen général. »