Planifier des scripts Python avec Apache Airflow

Si vous voulez travailler efficacement en tant que data scientist ou ingénieur, il est important d’avoir les bons outils. Avoir des ressources dédiées à portée de main permet d’effectuer des processus répétitifs de manière agile. Il ne s’agit pas seulement d’automatiser ces processus, mais aussi de les exécuter régulièrement de manière cohérente. Cela peut aller de l’extraction, de l’analyse et du chargement des données pour le rapport régulier de votre équipe de science des données au réentraînement de votre modèle d’apprentissage automatique chaque fois que vous recevez de nouvelles données des utilisateurs.

Apache Airflow est l’un de ces outils qui vous permet de vous assurer efficacement que votre flux de travail reste sur la bonne voie. Il s’agit d’un système de gestion de flux de travail de données open source qui vous permet d’automatiser des processus simples à complexes principalement écrits en Python et dispose d’une interface utilisateur Web riche pour visualiser, surveiller et résoudre les problèmes qui peuvent survenir. Ce didacticiel est un guide étape par étape sur la façon d’installer, de configurer et de configurer Airflow, ainsi que sur la façon dont vous pouvez planifier des scripts Python avec Apache Airflow.

Installation et configuration

Commençons par configurer Airflow sur notre poste de travail afin de pouvoir tester et exécuter les pipelines que nous construisons. Il existe plusieurs façons de configurer et d’exécuter Apache Airflow sur son propre système. Dans ce tutoriel, nous allons configurer Airflow sur Docker. Donc, si Docker et Docker Compose ne sont pas déjà installés sur votre système, téléchargez-les à partir de leurs sites Web respectifs.

Ensuite, (dans un dossier séparé) téléchargeons un fichier Docker Compose, développé par la communauté Airflow qui décrit tous les services nécessaires à Airflow. Cela crée essentiellement un environnement beaucoup plus facile. Vous pouvez soit le télécharger avec ce lien, soit utiliser la commande curl suivante :

curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.2.4/docker-compose.yaml'

Et ensuite, vous devriez obtenir un fichier appelé docker-compose.YAML. Ce fichier contient plusieurs définitions de service dont certaines pour déployer Airflow sur Docker Compose.

Maintenant, avant de lancer Airflow pour la première fois, nous devons préparer un environnement. créons un dossier sur lequel Airflow fonctionnera, et créons-y trois dossiers – dags, plugins et logs :

mkdir ./dags ./plugins ./logs Or mkdir dags plugins logs

La structure de votre dossier devrait ressembler à ceci :

.
├── dags
├── docker-compose.yaml
├── logs
└── plugins

3 directories, 1 file

Ensuite, si vous êtes sur Mac ou Windows, vous devrez exporter certaines variables d’environnement afin de vous assurer que les autorisations d’utilisateur et de groupe sont les mêmes entre ces dossiers de votre hôte et les dossiers de vos conteneurs.

echo -e "AIRFLOW_UID=$(id -u)" > .env

Initialiser le Apache Airflow

Maintenant que les dossiers sont créés et que les autorisations sont définies, initialisons notre instance Airflow. Pour ce faire, exécutez :

docker-compose up airflow-init

Ce service est chargé d’exécuter airflow DB init ou airflow DB upgrade, puis de créer l’utilisateur « airflow » avec le mot de passe « airflow », c’est exactement ce que vous pouvez voir ici à partir de la sortie. Cela créerait également les conteneurs requis pour exécuter les serveurs Airflow.

schedule-python-scripts-with-apache-airflow

Alors maintenant, la seule dernière chose que nous devons faire est d’exécuter la commande :

docker-compose up

Cette commande exécute tous les services spécifiés dans le fichier docker-compose – le planificateur, le serveur Web, le travailleur, les préparations, etc.

Pour vérifier que les conteneurs Docker sont opérationnels, vous pouvez ouvrir un nouveau terminal et exécuter la commande suivante :

docker ps

Ça devrait ressembler a quelque chose comme ca:

schedule-python-scripts-with-apache-airflow

Nous pouvons enfin utiliser notre instance Airflow. Pour ce faire, ouvrez un navigateur Web et accédez à https://localhost:8080 ou http://127.0.0.1:8080/, là si vous voyez une page de connexion, cela signifie que cela a fonctionné avec succès !

Pour vous connecter, vous pouvez entrer l’identifiant et le mot de passe que vous avez obtenus à partir de la commande init initiale, qui était « airflow » et « airflow ». Après cela, vous serez accueilli avec le tableau de bord principal de votre instance Airflow sur docker, qui ressemblera à ceci :

schedule-python-scripts-with-apache-airflow

Et c’est tout! Voyons maintenant comment planifier des scripts Python avec Apache Airflow

Planifier des scripts Python

Maintenant, pour planifier des scripts Python avec Apache Airflow, ouvrez le dossier dags où votre Airflow est installé ou créez un dossier appelé « dags » à l’intérieur. Ce sera l’endroit où tous vos dags ou scripts python seront. Une fois que vous l’avez, créez-y un fichier se terminant par une extension .py (gardez à l’esprit que tout dag aura l’extension .py).

La première étape pour créer un dag consiste à effectuer les bonnes importations. Tout d’abord, ouvrez le fichier que vous venez de créer (crm-elastic-dag.py dans mon cas) et ajoutez l’import suivant :

from airflow import dag

Ici, nous importons la classe dag, c’est une importation essentielle que vous devez effectuer pour dire que ce fichier est en fait un dag.

La deuxième importation la plus importante que vous devez faire est de faire des dates :The second most important import you have to make dates:

from airflow.utils.dates import days_ago

Ceci est important car, comme vous allez le voir, un pipeline de données attend une date de début et une heure à laquelle nous dirons que le pipeline de données doit commencer à être planifié.

Maintenant, nous pouvons commencer à définir comment nous voulons utiliser ou planifier des scripts Python avec Apache Airflow. J’ai créé un dag déjà créé un dag qui exécuterait simplement un script python que j’ai créé et qui s’exécuterait quotidiennement. Vous pouvez comprendre comment j’ai fait cela à partir du code ci-dessous:

from airflow.models import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.utils.dates import days_ago
from includes.vs_modules.test import hello

args = {
    'owner': 'Vincent Stevenson',
    'start_date': days_ago(1) # make start date in the past
}

#defining the dag object
dag = DAG(
    dag_id='crm-elastic-dag',
    default_args=args,
    schedule_interval='@daily' #to make this workflow happen every day
)

#assigning the task for our dag to do
with dag:
    hello_world = PythonOperator(
        task_id='hello',
        python_callable=hello,
        # provide_context=True
    )

Ici, au lieu d’inclure le script lui-même que je veux utiliser, je l’ai appelé à partir d’un emplacement de fichier différent. Vous pouvez voir ici :

from includes import hello

Cela aiderait à planifier plusieurs scripts et à gérer leur manière plus facile à gérer.

Le script que je planifie n’est qu’une simple fonction pour imprimer bonjour à chaque exécution :

def hello():
    print('Hello!')

Maintenant, c’est un script très basique, mais une fois que vous comprenez les structures de fichiers, vous pouvez commencer à inclure plus de définitions de fonctions, des scripts Python supplémentaires à inclure, vous pouvez commencer à vraiment faire évoluer vos pipelines de données réels.

Après avoir effectué toutes les étapes ci-dessus, vous pouvez enfin redémarrer les conteneurs et travailler avec cela sur le tableau de bord Airflow. Exécutez la même commande pour démarrer les serveurs :

docker-compose up -d

Cela ne prendra pas beaucoup de temps si vous l’avez déjà fait. Il configure tout, télécharge les couches et tout cela depuis le hub docker, etc. Une fois cela fait, nous pouvons visiter à nouveau le tableau de bord Airflow pour voir notre dag.

Et si cela a fonctionné avec succès, vous devriez pouvoir voir votre dag sur le tableau de bord comme ceci :

Ici, vous pouvez cliquer dessus pour voir ce qu’il contient et le gérer. Ici, vous pouvez activer le petit interrupteur dans le coin supérieur gauche pour l’activer, puis ce serait son processus défini. Vous pouvez également voir son processus comme son démarrage, ses journaux, etc. sur cette page.

schedule-python-scripts-with-apache-airflow
schedule-python-scripts-with-apache-airflow

Et ici, si vous visitez la section des journaux, vous pouvez voir le message « Hello! » déclaration que nous avons écrite et qui a été faite par le script python externe que nous avons créé !

Derniers mots

Nous espérons que vous avez apprécié ce didacticiel sur l’installation et l’utilisation d’Airflow. Maintenant que vous avez appris à l’installer et à programmer des scripts Python avec Apache Airflow. Vous pouvez commencer à automatiser et à rationaliser votre flux de travail dès aujourd’hui ! Si vous avez des questions, n’hésitez pas à nous contacter à tout moment.

Spread the love
 
   

Laisser un commentaire