Saltar al contenido
Introducción a Apache Airflow

Creación y configuración de conexiones y variables en Airflow.

Introducción

En Apache Airflow, las conexiones y variables desempeñan roles fundamentales para facilitar la creación y ejecución eficiente de flujos de trabajo. Aquí te explico cómo funcionan y por qué son importantes:

Conexiones en Apache Airflow:

  • Definición: Las conexiones son utilizadas para establecer accesos seguros y configuraciones hacia recursos externos, como bases de datos, APIs o servicios en la nube.
  • Ejemplo: Si necesitas acceder a una base de datos MySQL desde Airflow para ejecutar una tarea, primero debes definir una conexión que contenga los detalles de autenticación y ubicación de esa base de datos.

Variables en Apache Airflow:

  • Definición: Las variables en Airflow son objetos que almacenan cualquier tipo de dato necesario en el flujo de trabajo, accesibles de manera global.
  • Utilidad: Se utilizan para almacenar configuraciones estáticas o valores dinámicos que pueden ser referenciados en las tareas del flujo de trabajo.
  • Ejemplo: Puedes crear una variable llamada email_addr para almacenar una dirección de correo electrónico que será utilizada en varias tareas para enviar notificaciones.

Importancia en la creación de flujos de trabajo:

  • Eficiencia y efectividad: Las conexiones permiten a Airflow establecer comunicación segura con recursos externos de manera centralizada y gestionada.
  • Disponibilidad de datos: Las variables aseguran que la información crítica necesaria para las tareas esté disponible y sea accesible en el momento adecuado durante la ejecución del flujo de trabajo.
  • Configuración centralizada: Al gestionar conexiones y variables en Airflow, se asegura una configuración consistente y fácil de mantener en múltiples flujos de trabajo.

En resumen, la adecuada creación y configuración de conexiones y variables en Apache Airflow son esenciales para la construcción de flujos de trabajo robustos y eficientes. Facilitan la integración con recursos externos y aseguran que los datos y configuraciones necesarios estén disponibles para las tareas en el momento adecuado, mejorando así la automatización y la eficiencia operativa en entornos de trabajo complejos.

Resumen

En Airflow, las conexiones y las variables juegan roles fundamentales para gestionar y reutilizar información en las pipelines de manera segura y eficiente.

Conexiones en Airflow

Las conexiones se utilizan para definir la información de acceso a recursos externos, como bases de datos, servidores FTP, almacenamiento en la nube, entre otros. Aquí hay algunos puntos clave sobre las conexiones:

  1. Creación de Conexiones:

    • Accede al menú "Connections" en la interfaz web de Airflow.
    • Haz clic en el botón "+ Add Connection".
    • Completa los campos obligatorios como tipo de conexión, host, puerto, nombre de usuario y contraseña.
    • Para algunas conexiones sensibles, como bases de datos, se recomienda almacenar la información de conexión en un archivo externo y referenciarla en Airflow para evitar la exposición de datos confidenciales.
  2. Uso en Pipelines:

    • En la definición de una tarea en tu DAG, puedes referenciar una conexión utilizando la sintaxis {{ conn.connection_name }}.
    • Por ejemplo, {{ conn.my_postgres_db }} podría referirse a la conexión a una base de datos PostgreSQL llamada "my_postgres_db".

Variables en Airflow

Las variables en Airflow son útiles para almacenar valores que se utilizan en múltiples lugares dentro de una pipeline. Aquí están los aspectos importantes sobre las variables:

  1. Creación de Variables:

    • Accede al menú "Variables" en la interfaz web de Airflow.
    • Haz clic en el botón "+ Add Variable".
    • Da un nombre descriptivo a la variable y establece el valor que deseas almacenar.
    • Las variables en Airflow son sensibles a mayúsculas y minúsculas.
  2. Uso en Pipelines:

    • En la definición de una tarea, puedes utilizar una variable usando la sintaxis {{ var.variable_name }}.
    • Por ejemplo, {{ var.my_api_key }} podría referirse a una clave de API almacenada como variable en Airflow.

Ventajas y Consideraciones

  • Reutilización y Centralización: Tanto las conexiones como las variables permiten centralizar y reutilizar configuraciones y datos en varias partes de tus pipelines.
  • Seguridad: Almacenar información confidencial como contraseñas o claves de API de manera segura y referenciarlas evita la exposición directa en el código.
  • Flexibilidad: Las variables pueden utilizarse en plantillas Jinja2 en cualquier parte de tu DAG, lo que proporciona flexibilidad en la configuración dinámica de tareas.

En resumen, el uso adecuado de conexiones y variables en Airflow facilita la administración y la seguridad de la información requerida para ejecutar pipelines complejas y eficientes.

Aplicación teórica

Un ejemplo práctico de creación y configuración de conexiones y variables en Apache Airflow:

1. Creación de una conexión:

Para crear una conexión en Airflow, sigue estos pasos:

  1. a) En la interfaz de usuario de Airflow, haz clic en "Admin" y luego en "Connections".
  2. b) Selecciona la opción "Add a new record".
  3. c) En el formulario que aparece, llena los campos necesarios, como el nombre de la conexión, el tipo de conexión, el host, el puerto, el esquema, el nombre de usuario y la contraseña.
  4. d) Haz clic en "Save" para guardar la conexión.

Por ejemplo, si queremos crear una conexión a una base de datos MySQL llamada "my_database", podemos hacer lo siguiente:


Nombre: my_mysql_connection
Tipo: MySQL
Host: localhost
Puerto: 3306
Esquema: my_database
Nombre de usuario: my_user
Contraseña: my_password

2. Configuración de una variable:

Para configurar una variable en Airflow, sigue estos pasos:

  1. a) En la interfaz de usuario de Airflow, haz clic en "Admin" y luego en "Variables".
  2. b) Selecciona la opción "Create".
  3. c) Llena los campos necesarios, como el nombre de la variable y su valor.
  4. d) Haz clic en "Save" para guardar la variable.

Por ejemplo, si queremos configurar una variable llamada "my_variable" con un valor de "10", podemos hacer lo siguiente:


Nombre: my_variable
Valor: 10

A partir de aquí, ya podríamos utilizar la conexión y la variable en nuestras tareas de Airflow, por ejemplo, para conectarnos a la base de datos y recuperar datos usando la conexión y utilizar la variable en alguna tarea de Python.

Aplicación práctica

Un ejemplo en Python de cómo crear y configurar conexiones y variables en Apache Airflow:


# Importamos las clases necesarias
from airflow import DAG
from airflow.models import Variable
from airflow.utils.dates import days_ago
from airflow.providers.postgres.hooks.postgres import PostgresHook

# Definimos las variables
database_name = "my_database"
table_name = "my_table"

# Creamos una conexión
conn = PostgresHook(postgres_conn_id="my_postgres_connection")

# Creamos una variable
Variable.set(key="my_variable", value="hello world")

# Definimos la DAG
dag = DAG(
    dag_id="example_dag",
    start_date=days_ago(1),
    schedule_interval="@daily"
)

# Utilizamos la conexión para obtener los datos de la tabla
data = conn.get_records(f"SELECT * FROM {database_name}.{table_name}")

# Utilizamos la variable en nuestro DAG
print(Variable.get("my_variable"))

# Realizamos alguna tarea con los datos obtenidos
for row in data:
    print(row)

Este ejemplo muestra cómo crear una conexión a una base de datos PostgreSQL utilizando PostgresHook, y cómo utilizar esta conexión para obtener datos de una tabla en la base de datos. Además, crea una variable llamada my_variable y la utiliza posteriormente en el DAG.