Repo pour la team data sur GCP.
Ce repo contient les DAGs Airflow et les scripts nécessaires pour l'orchestration des jobs.
- Les DAGs sont dans
orchestration/dags/
- Les scripts appelés dans les DAGs sont à mettre dans
jobs/
, et divisés en 2 catégories :- ETL jobs : pour l'extraction, la transformation et le chargement des données
- ML jobs : pour les micro services de machine learning
+-- orchestration : DAGS Airflow (Cloud Composer)
| +-- airflow
| +-- dags
| +-- tests
|
+-- jobs
| +-- etl_jobs
| +-- external
| +-- adage
| +-- addresses
| +-- appsflyer
| +-- contentful
| +-- dms
| +-- downloads
| +-- metabase-archiving
| +-- qualtrics
| +-- brevo
| +-- siren
| +-- batch
| +-- ...
|
| +-- internal
| +-- gcs_seed
| +-- human_ids
| +-- import_api_referentials
| +-- ...
|
| +-- ml_jobs
| +-- algo_training
| +-- embeddings
| +-- record_linkage
| +-- ranking_endpoint
| +-- clusterisation
| +-- retrieval_endpoint
| +-- ...
- Accès aux comptes de services GCP
- Gcloud CLI
- Make installé
- linux :
sudo apt install make
- mac :
brew install make
- linux :
- Installer les packages prérequis
make install_prerequisites
- Installer les librairies prérequises (non nécessaire sur macos)
- [Ubuntu]:
make install_ubuntu_libs
- [MacOS]:
-
make install_macos_libs
-
ajouter les lignes suivantes à votre
~/.zshrc
export MYSQLCLIENT_LDFLAGS="-L/opt/homebrew/opt/mysql-client/lib -lmysqlclient -rpath /usr/local/mysql/lib" export MYSQLCLIENT_CFLAGS="-I/opt/homebrew/opt/mysql-client/include -I/opt/homebrew/opt/mysql-client/include/mysql"
-
- [Ubuntu]:
-
Cloner le projet
git clone git@github.com:pass-culture/data-gcp.git cd data-gcp
-
[LINUX] Installation de quelques librairies nécessaires à l'install du projet
make install_ubuntu_libs
-
Installation du projet :
-
Pour les Data Analysts :
make install_analytics
Cette installation est simplifiée pour les Data Analysts, afin de mettre tous les requirements nécecssaires à la DA dans un même venv. Elle installe également des pre-commit hooks pour le projet, ce qui permet de coder juste du premier coup.
-
Pour la team DE/DS
-
Pour les Data Scientists :
make install_science
-
Pour les Data Engineers :
make install_engineering
Ces commande créé différents sous-environnements virtuels pour les différents types de jobs spécifiés dans le fichier
Makefile
. Elle installe également des pre-commit hooks pour le projet, ce qui permet de coder juste du premier coup. -
-
- Si vous avez une erreur liée à uv : Redémarrer un terminal et relancez la commande posant problème
- La migration de
pyenv
àuv
peut poser problème en mélangeant les environnements virtuels. 2 solutions s'offrent à vous :-
Retirer pyenv de votre PATH en supprimant les lignes suivantes de votre .bashrc/.zshrc
export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
-
Supprimer toutes les configs de pyenv dans le dossier courant
make delete_python_version_files
-
Dans le fichier .env.local
, renseigne les valeurs des variables manquantes en utilisant cette page
Les DAGs Airflow orchestrant les différents jobs DA/DE/DS sont détaillés dans le README.md du dossier orchestration
Les dags sont déployés automatiquement lors d'un merge sur master / production (voir la doc de déploiement continu)
Pipelines détaillées dans le README de github Action
Pour créer un nouveau micro service de ML ou d'ETL, nous pouvons utiliser les 3 commandes suivantes :
MS_NAME=mon_micro_service make create_microservice_ml
: Créé un micro service de ML dans le dossierjobs/ml_jobs
MS_NAME=mon_micro_service make create_microservice_etl_internal
: Créé un micro service de ML dans le dossierjobs/etl_jobs/internal
MS_NAME=mon_micro_service make create_microservice_etl_external
: Créé un micro service de ML dans le dossierjobs/etl_jobs/external
où mon_micro_service est le nom du micro service. Exemple :
MS_NAME=algo_llm make create_microservice_ml
Cela va :
- créer un dossier
algo_llm
dans le dossierjobs/ml_jobs
avec les fichiers nécessaires pour le micro service. - Commiter les changements
- Lancer l'installation du nouveau micro service