Apprendre à exécuter et superviser un job Talend via Apache Airflow en utilisant un script shell généré automatiquement par Talend. Introduction : Complémentarité, pas concurrence# Depuis l’annonce de l’abandon progressif du projet Talend Open Studio for Data Integration, la communauté data engineering s’interroge : comment continuer à tirer parti de Talend tout en modernisant son orchestration ? Plutôt que de voir Talend et Apache Airflow comme des outils concurrents, pourquoi ne pas les considérer comme complémentaires ? Talend, avec son approche low-code, permet de concevoir rapidement des flux ETL/ELT visuels. Airflow, lui, est un outil d’orchestration code-first, puissant, traçable, et capable de gérer des dépendances, des retries, et des alertes. Dans cet article, nous allons voir comment exécuter un job Talend depuis Airflow, en tirant parti du script shell généré par Talend, et en bénéficiant de toute la puissance d’Airflow pour le monitorer, le relancer en cas d’échec, ou encore déclencher des alertes. Pourquoi exécuter Talend via Airflow ?# Avant, on lançait les jobs Talend via le Planificateur de tâches Windows (.bat) ou cron (Linux, .sh). Cela fonctionne, mais présente plusieurs limites : ❌ Pas de traçabilité claire des exécutions ❌ Impossible de gérer des dépendances entre jobs ❌ Aucun mécanisme de retry automatique ❌ Pas d’interface de supervision centralisée Airflow corrige tous ces points. En intégrant Talend à Airflow, on obtient : ✅ Suivi en temps réel des exécutions ✅ Gestion des dépendances entre tâches ✅ Retentatives automatiques en cas d’échec ✅ Alertes par email ou Slack ✅ Interface web intuitive Étape 1 : Générer le script exécutable depuis Talend# Talend peut exporter un job en plusieurs formats exécutables : .bat → Windows .ps1 → PowerShell .sh → Shell (Linux/macOS) .jar → Java (indépendant du système) Nous allons utiliser le fichier .sh car Airflow gère très bien les commandes Bash via l’opérateur BashOperator. Comment générer le .sh ?# Ouvre ton projet dans Talend Open Studio Fais un clic droit sur ton job (ex: job_rpt_sales_day) Sélectionne "Build Job" Choisis le format "Shell script" Exporte le dossier dans un emplacement accessible depuis ton environnement Airflow Exemple de structure : dags/ └── talend/ └── job_rpt_sales_day/ ├── job_rpt_sales_day_run.sh ├── lib/ └── context/ 💡 Astuce : Place ce dossier dans le répertoire dags/talend/ de ton Airflow pour qu’il soit accessible au scheduler. Étape 2 : Préparer l’environnement Airflow# Assure-toi que : - Airflow est installé et fonctionnel - Le script .sh est accessible depuis le container ou serveur Airflow - Les dépendances (Java, variables d’environnement, accès réseau) sont configurées Tu peux tester manuellement le script dans ton terminal : sh /chemin/vers/job_rpt_sales_day_run.sh Si cela fonctionne, tu es prêt à l’intégrer à Airflow. Étape 3 : Créer le DAG Airflow# Voici un DAG complet pour planifier l’exécution de ton job Talend. Schedule Talend job on Apache Airflow""" Name : Job Sales Author : Joseph Konka Creation Date : 2025.08.13 Last Update : 2025.08.13 Long Description Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt. Diam ut venenatis tellus in metus vulputate eu. Volutpat diam ut venenatis tellus in metus. Et egestas quis ipsum suspendisse ultrices gravida. Aliquam nulla facilisi cras fermentum odio eu. Blandit massa enim nec dui. Lorem ipsum dolor sit amet consectetur adipiscing. """ import os from datetime import datetime, timedelta from airflow import DAG from airflow.providers.standard.operators.empty import EmptyOperator from airflow.providers.standard.operators.bash import BashOperator # Config & Parameters CONNECTION_ID = "dwh" OWNER_USERNAME = "joekakone" START_DATE = datetime(2025, 5, 20) # Use today date to avoid undesirable reruns DAG_NAME = "etl_sales_day" DAG_DESCRIPTION = "ETL Sales Day" DAG_FREQUENCY = "15 08 * * *" # Every day at 08:15 AM DAG_TAGS = ["prod", "sales", "etl", "daily", "08H"] ############################################################ AIRFLOW_EMAIL_LIST = [ "konka.dataanalytics@gmail.com", ] BASE_DIR = os.environ.get("AIRFLOW_HOME") TALEND_BASH_PATH = os.path.join(BASE_DIR, "dags/talend/job_rpt_sales_day/job_rpt_sales_day_run.sh") TALEND_COMMAND = str(f"sh '{TALEND_BASH_PATH}'") # Define default_args and DAG default_args = { "owner": OWNER_USERNAME, "start_date": START_DATE, } with DAG( dag_id=DAG_NAME, default_args=default_args, description=DAG_DESCRIPTION, schedule=DAG_FREQUENCY, tags=DAG_TAGS, catchup=False, max_active_runs=1, ) as dag: ################################################################################# # Start start_task = EmptyOperator(task_id="start") # Talend Task talend_task = BashOperator(task_id='talend_task', bash_command=TALEND_COMMAND) # End end_task = EmptyOperator(task_id="end") ################################################################################# ################################################################################# # Flow start_task >> talend_task >> end_task ################################################################################# Explications clés du DAG BashOperator : Exécute le script .sh généré par Talend. retries et retry_delay : En cas d’échec, Airflow relance automatiquement le job. email_on_failure : Envoie une alerte si le job échoue. catchup=False : Évite l’exécution de runs passés si le scheduler a été arrêté. max_active_runs=1 : Garantit qu’une seule instance tourne à la fois. ⚠️ Attention : Assure-toi que Java est disponible dans l’environnement où Airflow exécute le script, car Talend dépend de la JVM. Étape 4 : Déployer et tester# Copie le fichier .py dans ton dossier dags/ Redémarre (ou attends le refresh) d’Airflow Active le DAG dans l’interface web Lance un test manuel via le bouton "Trigger DAG" Consulte les logs pour vérifier que le job Talend s’exécute correctement Conclusion# Intégrer Talend à Airflow n’est pas une migration, mais une évolution stratégique. Tu continues à tirer parti de la rapidité de développement de Talend, tout en bénéficiant de la robustesse, traçabilité et automatisation d’Airflow. Avec cette approche, tu peux : Ordonnancer tous tes jobs Talend depuis une seule interface Corréler les exécutions avec d’autres tâches (scripts Python, SQL, APIs) Centraliser la supervision de ton data pipeline Talend et Airflow ne sont pas en concurrence. Ensemble, ils forment un duo redoutable pour l’orchestration de données. Nous sommes arrivés à la fin de ce tutoriel. J’espère qu’il t’a été utile ! N’hésite pas à poser des questions en commentaire ou à partager ton retour d’expérience. À très bientôt !