Planificación en Airflow

Introducción a Apache Airflow en Python

Mike Metzger

Data Engineer

Ejecuciones de DAG

  • Instancia específica de un flujo de trabajo en un momento dado
  • Se ejecuta manualmente o vía schedule_interval
  • Mantiene estado del flujo y de sus tareas
    • running
    • failed
    • success
1 https://airflow.apache.org/docs/stable/scheduler.html
Introducción a Apache Airflow en Python

Vista de ejecuciones de DAG

Vista de Ejecuciones de DAG

Introducción a Apache Airflow en Python

Estado de ejecuciones de DAG

Estado de Ejecuciones de DAG

Introducción a Apache Airflow en Python

Detalles de programación

Al programar un DAG, destacan estos atributos:

  • start_date - Fecha/hora inicial para programar la ejecución
  • end_date - Opcional; cuándo dejar de crear nuevas instancias
  • max_tries - Opcional; número de intentos
  • schedule_interval - Frecuencia de ejecución
Introducción a Apache Airflow en Python

Intervalo de programación

schedule_interval indica:

  • Con qué frecuencia programar el DAG
  • Entre start_date y end_date
  • Puede definirse con sintaxis cron o con presets integrados
Introducción a Apache Airflow en Python

Sintaxis de cron

Sintaxis de cron

  • Proviene del formato cron de Unix
  • Consta de 5 campos separados por espacios
  • Un asterisco * ejecuta en cada intervalo (p. ej., cada minuto, cada día)
  • Se permiten valores separados por comas en un campo
Introducción a Apache Airflow en Python

Ejemplos de cron

0 12 * * *              # Run daily at noon
* * 25 2 *              # Run once per minute on February 25
0,15,30,45 * * * *      # Run every 15 minutes
Introducción a Apache Airflow en Python

Presets del planificador de Airflow

Presets:

  • @hourly
  • @daily
  • @weekly
  • @monthly
  • @yearly

Equivalente cron:

  • 0 * * * *
  • 0 0 * * *
  • 0 0 * * 0
  • 0 0 1 * *
  • 0 0 1 1 *
1 https://airflow.apache.org/docs/stable/scheduler.html
Introducción a Apache Airflow en Python

Presets especiales

Airflow tiene dos presets especiales de schedule_interval:

  • None - No programar nunca; para DAGs lanzados manualmente
  • @once - Programar solo una vez
Introducción a Apache Airflow en Python

Problemas con schedule_interval

Al programar un DAG, Airflow:

  • Usa start_date como el valor más temprano
  • Programa la tarea en start_date + schedule_interval
'start_date': datetime(2020, 2, 25),
'schedule_interval': @daily

Esto significa que la primera ejecución posible del DAG es el 26 de febrero de 2020

Introducción a Apache Airflow en Python

¡Vamos a practicar!

Introducción a Apache Airflow en Python

Preparing Video For Download...