📄 Télécharger la fiche projet PDF
Bienvenue sur mon portfolio technique. Je suis Souleymane Sow, Data Engineer passionné par l’automatisation, la structuration et l’optimisation de pipelines distribués.
Ce projet PySpark traite des sinistres d’assurance en plusieurs étapes :
scripts/ : contenant generate_parquet.py pour créer les données parquet et run_inference.pypour exécuter le pipeline completdata/ : dossier contenant le fichier sinistres.parquet généré d’entréesrc/models/ : classes Python avec héritage (Sinistre, SinistreVol)src/utils/ : fonctions de nettoyage (nettoyer_montant)src/pipeline/ : modules PySpark (reader, cleaner, aggregator, writer)tests/ : tests unitaires avec pytest.github/workflows/ : CI/CD avec GitHub Actionsdocs/: contenant index.md, la fiche technique du projet et documentationLe script scripts/generate_parquet.py permet de générer un fichier Parquet simulé avec options en ligne de commande :
--samples : nombre d’échantillons à générer--output : chemin du fichier de sortie--validate : active la validation des donnéesExemple :
python scripts/generate_parquet.py --samples 1000 --output data/sinistres.parquet --validate
Le projet inclut deux types de tests :
tests/test_spark_validation.py) : vérifient le schéma, la présence de données et l’absence de nulls.tests/test_validation_metier.py) : vérifient les règles métier (montants valides, types de sinistres, absence de doublons).Cloner le dépôt, créer l’environnement, générer les données parquet, lancer le pipeline et exécuter les tests :
# 1. Cloner le dépôt
git clone https://github.com/SouleymaneSow/sinistre-pipeline-python-pyspark.git
# 2. Se placer dans le dossier du projet
cd sinistre-pipeline-python-pyspark
# 3. Créer un environnement conda avec Python 3.11
conda create -n sinistre_env python=3.11
# 4. Activer l’environnement
conda activate sinistre_env
# 5. Installer les dépendances
pip install -r requirements.txt
# 6. Générer les données de test en parquet
python -m scripts.generate_parquet
# 7. Lancer le pipeline complet
python -m scripts.run_inference
# 8. Exécuter les tests unitaires
python -m pytest tests/
Toutes les commandes du projet sont centralisées dans un Makefile pour simplifier l’exécution :
make lint : vérifie la qualité du code avec pre-commit (linting, formatage, hooks)make generate : Génération des données Parquet (scripts/generate_parquet.py)make run : lance le pipeline complet (scripts/run_inference.py)make test-technique : exécute uniquement les tests techniques (schéma, colonnes, nullabilité)make test-metier : exécute uniquement les tests métier (règles métier, montants, sinistres)make test-all : exécute l’ensemble des testsmake docs : génère la documentation avec pdoc👉 Cela permet d’automatiser toutes les étapes (pipeline, tests, documentation) avec des commandes simples et reproductibles.
La documentation détaillée du code est générée automatiquement avec pdoc:
make docs
et accessible en ligne :
cache() pour éviter les recalculsbroadcast() pour optimiser les jointures avec petites tablesrepartition() pour équilibrer les partitions👉 Lien pour voir le code sur Github
👉 📄 Voir la fiche projet PDF