1. Cas d'Usage et Dataset
Objectif : Aider les autorités (DOT) et les assureurs à identifier les zones à haut risque.
- Source : Kaggle - US Accidents (Sobhan Moosavi).
- Volumétrie : ~7.7 millions d'enregistrements (3 Go CSV brut).
- Problèmes identifiés : Fort taux de valeurs nulles (Météo) et typage "String" intégral nécessitant un casting.
2. Organisation du Repository
Structure des fichiers du projet final :
- Projet/
- data/ (Données brutes et traitées)
- outputs/ (Résultats d'export)
- proof/ (Preuves d'exécution)
- de1_project_config.yml (Configuration paramétrique)
- DE1_Project_Notebook_EN.ipynb (Pipeline PySpark principal)
- DE1_Project_Report.pdf (Rapport PDF complet)
- project_genai.md (Documentation IA)
- project_metrics_log (Logs de performance)
3. Architecture Lakehouse (Medallion)
Le pipeline suit l'architecture Bronze-Silver-Gold avec Spark.
🥉 Bronze (Landing)
Ingestion brute CSV. Ajout des colonnes d'audit (ingested_at). Stockage Parquet non partitionné pour la vitesse.
🥈 Silver (Cleaning)
Casting des types (Severity INT, Date Timestamp). Partitionnement initial par State, puis optimisé par Year.
🥇 Gold (Analytics)
Agrégats métier : Accidents par État et tendances mensuelles pour le reporting.
4. Preuves et Métriques (Evidence)
Comparaison de performance sur la requête : "Compter les accidents en 2021".
| Phase | Fichiers Lus | Temps (ms) | Observation |
|---|---|---|---|
| Baseline (Part. par State) | 10 | 400 ms | Lecture lente (Full Scan) |
| Optimisé (Part. par Year) | 7 | 43 ms | Lecture rapide (Partition Pruning) |
L'optimisation par année a permis de réduire drastiquement les I/O grâce au Partition Pruning.