Plannifier un job Talend sur Airflow
Pendant longtemps, le point a été de migrer les jobs Talend vers Apache Airflow. Pourtant, ils peuvent se compléter et coexister dans un même environnement. Dans cet article, nous verrons comment planifier l'exécution d'un job Talend sur Airflow.
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 :
💡 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 :
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.
"""
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
etretry_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 !