M3E4 — Proyecto #2
TLC Pipeline - Parte 2: Orquestamiento de Datos con Apache Airflow
Este proyecto es una continuación directa del Proyecto #1
El objetivo principal de este proyecto es:
📌 Automatizar la ingesta de archivos utilizando Apache Airflow como orquestador
Descripción del proyecto
Tu tarea en este proyecto es automatizar la ingesta de archivos para los datasets de Yellow y Green trips utilizando Apache Airflow como orquestador.
Consideraciones:
- Para facilitar el aprendizaje, se recomienda comenzar por Yellow Trips y, luego, si queda tiempo, avanzar a Green Trips.
Outcome final
La solución final debe:
- Ingestar los datos del dataset de Yellow Trips (y Green trips) para todo el año 2025.
- Orquestar toda la ingesta utilizando Apache Airflow.
Instrucciones
1. Desplegar Airflow de manera local
Sigue esta guía oficial para desplegar Apache Airflow en local utilizando Docker Compose: https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.html
Tener en cuenta:
📌 Recomendación: Después de desplegar Apache Airflow, asegúrate de instalar el provider de AWS. Para hacerlo, busca en tudocker-composeel atributo_PIP_ADDITIONAL_REQUIREMENTSy reemplazándolo de tal manera que quede así:_PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:- apache-airflow-providers-amazon}
2. Crear conexión de Airflow a AWS
Luego de instalar el provider de AWS, crea una conexión tipo “Amazon Web Services” dentro de la UI de Airflow (Admin → Connections).
Aquí una guía para crear la conexión:
📌 https://www.astronomer.io/docs/learn/connections
Para crear la conexión, sugiero que crees un nuevo usuario de AWS y generes las access keys. Asegúrate que este nuevo usuario tenga los permisos adecuados para invocar la Lambda.
Puedes utilizar las siguientes políticas a modo de referencia:
Si solo utilizar lambda para este proyecto:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::115024895228:role/ROLE_NAME"
},
{
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction"
],
"Resource": "<<<YOUR ARN HERE>>"
}
]
}
Si también utilizas Glue (más abajo se especifica cómo se puede usar Glue)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"glue:GetCrawler",
"glue:GetCrawlers",
"glue:StartCrawler",
"glue:StartJobRun",
"glue:GetJobRun",
"logs:FilterLogEvents",
"glue:GetCrawlerMetrics",
"logs:CreateLogGroup",
"logs:PutLogEvents",
"glue:GetJobRuns",
"glue:GetJob"
],
"Resource": "<<<YOUR ARN HERE>>"
}
]
}
3. Crear un DAG que orqueste la ingesta
Antes de empezar a crear DAGs en Airflow te sugiero ver este curso introductorio de Airflow.
📌 https://academy.astronomer.io/path/airflow-101
Luego que entiendas las bases de cómo funciona Airflow crea un DAG con la siguiente estructura básica:
- Tarea start → dummy operator (start)
- Tarea que invoque la Lambda de ingesta (AwsLambdaInvokeFunctionOperator)
- Tarea end → dummy operator (end)
El flujo debe ser: start → lambda_ingest → end.
Luego realiza un backfill que permita la ingesta de todos los archivos de 2025 para el dataset de Yellow Trips.
Asegúrate de probar que funcione el backfill para 2025, ya que este será un requerimiento obligatorio del proyecto.
Si no conoces aún nada acerca de los backfills, esta es una de las funcionalidad más importantes de airflow.
Aquí algo de información al respecto
📌 https://www.youtube.com/watch?v=Pz9VKKqwCk0
Recursos técnicos - Proyecto #2
- Airflow for Beginners - Run Spotify ETL Job in 15 minutes!
- Airflow 101: Building Your First Workflow
- Airflow 101 (Airflow 3) Learning Path
- DAG writing best practices in Apache Airflow
Otros Recursos
- Implementing the functional data engineering paradigm in data load processes by using Airflow
- Generalizing data load processes with Airflow
- Data Engineers Shouldn’t Write Airflow Dags — Part 1
Contenido de la lección bloqueado
Your session expired. Please sign in again to continue.
Iniciar sesión