DAG

Clase 5 de 29 • Curso de Fundamentos de Apache Airflow

Clase anteriorSiguiente clase
    Mario Alexander Vargas Celis

    Mario Alexander Vargas Celis

    student•
    hace un año

    Un DAG (Directed Acyclic Graph) es un componente central en Apache Airflow que representa un flujo de trabajo. Este flujo está compuesto por tareas individuales y sus dependencias, organizadas de manera que sigan una estructura de grafo dirigido y acíclico.

    Características principales de un DAG

    1. Dirigido:
      • Cada tarea en un DAG tiene una dirección específica, indicando el flujo lógico de las dependencias.
      • Por ejemplo, si Task A → Task B, significa que Task B se ejecutará después de que Task A haya finalizado correctamente.
    2. Acíclico:
      • No puede haber bucles o ciclos en el flujo de trabajo.
      • Esto asegura que las tareas no entren en un estado de ejecución infinita.
    3. Configuración programática:
      • Los DAGs se definen en código Python, lo que brinda flexibilidad para agregar lógica personalizada en la definición de tareas o dependencias.

    Estructura de un DAG

    Un DAG en Airflow se configura definiendo:

    • Nombre del DAG: Identificador único del flujo.
    • Programación (Schedule): Frecuencia con la que debe ejecutarse el flujo (diario, semanal, cada hora, etc.).
    • Conjunto de tareas: Tareas individuales que conforman el flujo.
    • Dependencias entre tareas: Relaciones que determinan el orden de ejecución.

    from airflow import DAG from airflow.operators.dummy import DummyOperator from datetime import datetime

    # Crear el DAG dag = DAG( 'mi_primer_dag', description='Un ejemplo básico de DAG', schedule_interval='@daily', # Se ejecutará diariamente start_date=datetime(2023, 1, 1), # Fecha de inicio del DAG catchup=False # Evita ejecutar tareas atrasadas )

    # Definir las tareas inicio = DummyOperator(task_id='inicio', dag=dag) proceso = DummyOperator(task_id='proceso', dag=dag) fin = DummyOperator(task_id='fin', dag=dag)

    # Definir dependencias inicio >> proceso >> fin

    Elementos clave en un DAG

    1. Tareas (Tasks):

      • Componentes individuales del flujo.
      • Pueden ser operadores predefinidos, como BashOperator, PythonOperator, o tareas personalizadas.
    2. Dependencias:

      • Se especifican usando >> (dependencia directa) o << (dependencia inversa).
      • Ejemplo:tarea1 >> [tarea2, tarea3]
    3. Programación (Schedule):

      • Define cuándo se debe ejecutar el DAG.
      • Puede ser con expresiones cron (0 12 * * *) o intervalos predefinidos como @daily, @hourly.
    4. Fecha de inicio y fin:

      • El start_date marca cuándo comienza el DAG.
      • Opcionalmente, un end_date puede limitar su ejecución.
    5. Propiedades adicionales:

      • Retries: Número de intentos en caso de fallo.
      • Timeout: Límite de tiempo para ejecutar las tareas.
      • Catchup: Permite ejecutar tareas atrasadas si el DAG se activa después de la fecha de inicio.

    Ventajas de los DAGs

    1. Visualización clara:
      • Airflow proporciona una interfaz gráfica para observar la estructura del DAG y el estado de las tareas.
    2. Escalabilidad:
      • Los DAGs permiten manejar flujos complejos con dependencias múltiples.
    3. Reutilización:
      • Los DAGs definidos en código son fáciles de modificar, mantener y reutilizar.

    Usos comunes de los DAGs

    1. Pipelines de ETL/ELT:
      • Extracción, transformación y carga de datos de sistemas fuente a un Data Warehouse o Data Lake.
    2. Procesos de Machine Learning:
      • Automatización de entrenamientos, evaluaciones y despliegues de modelos.
    3. Reportes automatizados:
      • Generación y envío de reportes periódicos.
    4. Integraciones de sistemas:
      • Orquestar sincronización de datos entre APIs o bases de datos.

    En resumen, un DAG es el núcleo de cualquier flujo de trabajo en Apache Airflow, proporcionando una estructura programable, visualizable y altamente escalable para ejecutar tareas dependientes.

    Víctor Mazo

    Víctor Mazo

    student•
    hace 2 años

    En resumen, un DAG es la representación gráfica y estructural de un workflow, o en otras palabras, es una representación de las tareas que se van a ejecutar y la forma en la que se ejecutan.

    Carlos Eduardo Bracho Rosales

    Carlos Eduardo Bracho Rosales

    student•
    hace 2 años

    👀 Aqui el DAG Automatizar las pipelines: Airflow

    Royer Guerrero Pinilla

    Royer Guerrero Pinilla

    student•
    hace 3 años
    Screenshot 2022-11-01 at 10.38.21 PM.png
    👉 Considero destacar que cada unos de los items dentro del DAG se llaman task y tienen un operador que es básicamente el tipo de tarea

    ✨ Los estados de nuestra tarea pueden tener los siguientes estados

    Screenshot 2022-11-01 at 10.41.22 PM.png

    ✨ Los tipos de operador basicos son

    • SimpleHttpOperator
    • MySqlOperator
    • PostgresOperator
    • MsSqlOperator
    • OracleOperator
    • JdbcOperator
    • DockerOperator
    • HiveOperator
    • S3FileTransformOperator
    • PrestoToMySqlOperator
    • SlackAPIOperator

    Mas operadores https://airflow.apache.org/docs/apache-airflow-providers/operators-and-hooks-ref/index.html

    Rafael Alejandro Belalcázar Burbano

    Rafael Alejandro Belalcázar Burbano

    student•
    hace 3 años

    Dejo por aquí la documentación oficial con la explicación de lo que es un DAG.

    https://airflow.apache.org/docs/apache-airflow/stable/concepts/dags.html

    Lucas Gonzalez

    Lucas Gonzalez

    student•
    hace 3 años

    DAG( Directed Acyclic Graph)

    • Los Workflow los Podemos realizar a través de los DAG. Viene del concepto de los grafos y debe tener 2 cualidades. En primer lugar una dirección. Todas las aristas fluyen hacia una dirección. La segunda cualidad es que no pueden tener ciclos. Una arista que sale de un nodo no puede volver a ese nodo.