Aller au contenu

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 ?#

  1. Ouvre ton projet dans Talend Open Studio
  2. Fais un clic droit sur ton job (ex: job_rpt_sales_day)
  3. Sélectionne "Build Job"
  4. Choisis le format "Shell script"
  5. 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#

  1. Copie le fichier .py dans ton dossier dags/
  2. Redémarre (ou attends le refresh) d’Airflow
  3. Active le DAG dans l’interface web
  4. Lance un test manuel via le bouton "Trigger DAG"
  5. 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 !

Partagez sur les réseaux sociaux

Commentaires