APACHE AIRFLOW: QUÉ ES Y CÓMO FUNCIONA
Apache Airflow es una plataforma de código abierto que permite automatizar flujos de trabajo como código. A diferencia de las herramientas tradicionales basadas en interfaces visuales de "arrastrar y soltar", Airflow utiliza Python.Directed Acyclic Graph, o DiAG. que es una colección de todas las tareas que quieres ejecutar, organizadas de forma que reflejen sus relaciones y dependencias.
Apache Airflow no procesa los datos por sí mismo (como lo haría Spark), sino que dirige a las herramientas que sí lo hacen. Es el pegamento que une diferentes tecnologías para asegurar que el dato correcto llegue al lugar adecuado en el momento preciso. Si un equipo está luchando con scripts de cron desordenados o procesos manuales propensos a errores, Airflow es la evolución lógica para llevar tu ingeniería de datos al siguiente nivel. Componentes clave de Airflow:
- DAGs: El mapa de tu flujo de trabajo. Define qué tarea va antes que otra. Operadores: Las plantillas que definen qué se hace realmente (ejecutar un script de Python, una consulta en SQL, o transferir un archivo a S3).
- Tareas): La ejecución real de un operador.
- Scheduler: El motor que decide cuándo debe ejecutarse cada tarea según su calendario y dependencias.
- Servidor web: Una interfaz gráfica intuitiva para pausar, reanudar y vigilar el estado de tus procesos.
Casos de Uso
- ETL/ELT: Extraer datos de diversas fuentes, transformarlos y cargarlos en un Data Warehouse (como Snowflake o BigQuery).
- Machine Learning: Entrenar modelos de IA de forma periódica y automatizar el despliegue de los mismos.
- Reportes de Negocio: Generar informes financieros cada mañana asegurando que todos los datos fuente estén actualizados antes de empezar.
- Mantenimiento de Infraestructura: Realizar copias de seguridad de bases de datos o limpiar registros de logs antiguos.
Ejemplo: Flujo de reporte diario
El ejemplo es en python ya que es el lenguaje que maneja:from airflow import DAG
from airflow.operators.bash import BashOperator
from airflow.operators.python import PythonOperator
from datetime import datetime
# 1. Definimos una función de Python simple
def _procesar_datos():
print("Transformando los datos para el reporte...")
# Aquí iría tu lógica (limpieza, cálculos, etc.)
# 2. Configuración del DAG
with DAG(
dag_id='mi_primer_flujo', # Nombre en la interfaz
start_date=datetime(2023, 1, 1), # Cuándo empieza a contar
schedule_interval='@daily', # Se ejecuta cada noche
catchup=False # No ejecutar fechas pasadas
) as dag:
# TAREA 1: Ejecutar un comando de terminal (o un script PHP)
descargar_datos = BashOperator(
task_id='descargar_datos',
bash_command='echo "Descargando CSV desde el servidor..."'
)
# TAREA 2: Ejecutar una función de Python
procesar = PythonOperator(
task_id='procesar_datos',
python_callable=_procesar_datos
)
# TAREA 3: Notificación final
notificar = BashOperator(
task_id='notificar_exito',
bash_command='echo "Reporte listo y enviado."'
)
# 3. Definir el orden (Dependencias)
descargar_datos >> procesar >> notificar
- DAG, "mi_primer_flujo": Es el contenedor de todo. Se ejecutará una vez al día automáticamente.
- Tareas: Son los nodos del grafo. En este caso tenemos 3.
- El operador ">>": Define el orden. Airflow no ejecutará "procesar" hasta que "descargar_datos" termine con éxito.
¿Cómo se ve en la interfaz?
Cuando se accede al panel web de Airflow, normalmente en , se verá:- Graph View: Un gráfico con tres cajas conectadas por flechas.
- Status: Círculos de colores:
- Verde: Tarea terminada con éxito.
- Rojo: Falló (y Airflow avisará).
- Amarillo: Se está ejecutando ahora mismo.