Vai al contenuto principale
BlogCreare task con dipendenze complesse in Apache Airflow
Apache AirflowApache per i Big Data

Creare task con dipendenze complesse in Apache Airflow

8 Nov 20245 min lettura
SC

Stanislao Corvino

Dottore Commercialista · Data Evangelist

In Apache Airflow, i task con dipendenze complesse sono fondamentali per la gestione di flussi di lavoro avanzati. La possibilità di configurare dipendenze complesse tra i task permette di definire sequenze di esecuzione precise, garantendo che ogni task venga eseguito solo quando le condizioni necessarie sono soddisfatte.

Dipendenze lineari e fan-out/fan-in

Le dipendenze più comuni in Airflow sono:

  • Lineari: Task A → Task B → Task C
  • Fan-out: Un task che genera più task paralleli
  • Fan-in: Più task paralleli che convergono in un singolo task

In Python, le dipendenze si definiscono con gli operatori >> e <<:

task_a >> [task_b, task_c]  # fan-out
[task_b, task_c] >> task_d  # fan-in

Trigger Rules

Airflow offre diverse trigger rules che determinano quando un task downstream può iniziare:

  • all_success (default): il task parte solo se tutti i task upstream hanno avuto successo
  • all_failed: il task parte solo se tutti i task upstream sono falliti
  • all_done: il task parte quando tutti i task upstream sono completati, indipendentemente dal risultato
  • one_success: il task parte appena almeno un task upstream ha successo
  • one_failed: il task parte appena almeno un task upstream fallisce
  • none_failed: il task parte se nessun task upstream è fallito

BranchPythonOperator

Il BranchPythonOperator permette di creare flussi di lavoro condizionali. Basandosi su una funzione Python, il DAG può seguire percorsi diversi:

def choose_branch(**context):
    if context['params']['mode'] == 'full':
        return 'full_processing'
    return 'quick_processing'

branch = BranchPythonOperator(
    task_id='branching',
    python_callable=choose_branch
)

Cross-DAG Dependencies

Per dipendenze tra DAG diversi, Airflow offre:

  • ExternalTaskSensor: attende il completamento di un task in un altro DAG
  • TriggerDagRunOperator: avvia l'esecuzione di un altro DAG

Best Practice

  • Mantieni i DAG il più semplici possibile
  • Usa i gruppi di task (TaskGroup) per organizzare task correlati
  • Documenta sempre le dipendenze complesse
  • Testa le dipendenze con il comando airflow dags test

Padroneggiare le dipendenze complesse in Airflow è essenziale per costruire pipeline di dati robuste e affidabili.

Tag:
Apache AirflowBig DataDAG

Articoli correlati