Laboratório Desafio Final - Airflow no Docker Compose
Criação de um pipeline de dados que faça a extração dos dados no MongoDB e na API do IBGE e deposite no Data Lake da empresa. Após a ingestão dos dados no Data Lake, o dado tratado e filtrado será disponibilizado em um Database para realização de algumas consultas.
(Airflow com docker-compose; Data Lake: Amazaon S3; Database: Amazon RDS - MySQL)
Prof. Neylson Crepalde @neylsoncrepalde
1. Subir o Airflow localmente em uma estrutura de containers, usando docker-compose para utilização mais robusta.
- Clonar repositório: https://github.com/neylsoncrepalde/docker-airflow
- Ambiente utilizado na atividade: Linux Ubuntu (WSL2)
- https://aws.amazon.com/pt/
- Criação de Resource Groups para organizar serviços criados:
- AWS Resource Groups > Create Resource Group > Tag based:
- Group name: [rg-mbadados-m01]
- TAGs:
- Ambiente: MBA-Dados
- Projeto: des-final
- Amazon S3 > Buckets > Create bucket:
- Name: [mba-dados-desfinal]
- Amazon RDS > Databases > Create database
- Engine: MySQL 8.0.28
- Templates: Free tier
- Instance identifier: [db-mbadados]
- username: admin
- password: <seu_password>
- Public access: Yes
- Database port: 3306
- VPC security groups -> Inbound rules -> Add rule:
- Type: MYSQL/Aurora;
- Source: Anywhere-IPv4
5, 6, 7. Construir um pipeline que faz a captura de dados do MongoDB e da API do IBGE e deposita no S3. O pipeline também deve fazer a ingestão na base de dados SQL que estará servindo como DW. Para persistir os dados no DW, você deve ingerir apenas os dados referentes ao público-alvo, a saber, mulheres de 20 a 40 anos.
-
abrir a pasta "docker-airflow" em um editor de código (VSCode por ex.)
-
editar arquivo docker-compose-CeleryExecutor.yml
- webserver:
image: neylsoncrepalde/airflow-docker:2.0.0-pymongo
- flower:
image: neylsoncrepalde/airflow-docker:2.0.0-pymongo
- scheduler:
image: neylsoncrepalde/airflow-docker:2.0.0-pymongo
- worker:
image: neylsoncrepalde/airflow-docker:2.0.0-pymongo
- webserver:
-
abrir o Docker
-
carregar ambiente do Docker Compose - rodar comando no terminal:
docker-compose -f docker-compose-CeleryExecutor.yml up -d
(para escalar [n] workers adicionar opção: --scale worker=[n]
)
-
código Python da DAG do Pipeline:
- pasta dags;
- arquivo des-final.py
-
Amazon S3: conectar no S3 na AWS:
- criar/copiar credenciais de usuário do IAM: IAM > Usuários > Credenciais de segurança
- access_key_id:
- secret_access_key:
- criar/copiar credenciais de usuário do IAM: IAM > Usuários > Credenciais de segurança
-
Configurar as Variáveis de Ambiente da DAG no Airflow (credenciais/passwords):
- Airflow -> Admin -> Variables
-
Amazon RDS: conectar no MySQL na AWS:
-
sqlalchemy com MySQL - instalar módulo/driver do MySQL
pip install mysqlclient
(windows)sudo apt-get install -y python3-mysqldb
(ubuntu)
-
-
executar o Pipeline no Airflow (webserver)
Graph View
Gantt
Arquivos no Amazon S3
Database no Amazon RDS - MySQL
- Rodar comando no terminal:
docker-compose -f docker-compose-CeleryExecutor.yml down
André Carlucci