Skip to content

IGTI - MBA Engenharia de Dados - EDD: Laboratório Desafio Final

License

Notifications You must be signed in to change notification settings

alcarlucci/MBA-EDD-docker-airflow

Repository files navigation

Laboratório Desafio Final - Airflow no Docker Compose

IGTI - MBA Engenharia de Dados - EDD

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.

2. Criar uma conta free tier na AWS para realização das atividades.

  • 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

image

3. Criar um bucket no serviço Amazon S3 (na conta da AWS).

  • Amazon S3 > Buckets > Create bucket:
    • Name: [mba-dados-desfinal]

image

4. Criar uma instância RDS de banco de dados relacional de sua escolha (na conta da AWS).

  • 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

image

  • VPC security groups -> Inbound rules -> Add rule:
    • Type: MYSQL/Aurora;
    • Source: Anywhere-IPv4

image

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
  • 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:
  • Configurar as Variáveis de Ambiente da DAG no Airflow (credenciais/passwords):

    • Airflow -> Admin -> Variables

image

  • 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 image Gantt image Arquivos no Amazon S3 image

Database no Amazon RDS - MySQL image

Encerrar o ambiente do Airflow no Docker Compose:

  • Rodar comando no terminal:
docker-compose -f docker-compose-CeleryExecutor.yml down

André Carlucci

About

IGTI - MBA Engenharia de Dados - EDD: Laboratório Desafio Final

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published