Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 Qual a finalidade do projeto?

Esse projeto foi criado com o intuito de colocar em prática os conteúdos aprendidos sobre as ferramentas Airflow e Spark. Nele é realizado o tratamento de dados presentes em um arquivo csv, em seguida exportar os dados para um arquivo no formato parquet e realizado o upload na ferramenta Minio e banco de dados PostgreSQL.



💻 Tecnologias ultilizadas

  • 🐘 PostgreSQL: Ferramenta de banco de dados relacional;
  • ⭐ Spark: Ferramenta para tratamento e manipulação de dados;
  • 🟇 Airflow: Orquestração de tarefas, altamente utilizado com tarefas de ETL;
  • 🐳 Docker: Permite a criação e execução de ambiente isolados para aplicações e processos;
  • 🐍 Python: Linguagem de programação utilizada principalmente para processos de ETL;
  • 🦢 Minio: Permite o deploy e utilização de servidor de armazenamento de objetos, utilizando o padrão de API e uso do S3;
  • 🖽 Parquet: Formato de arquivo otimizado para consulta de dados, utilizando formato de armazenamento em colunas;
  • 𝚇 CSV: Formato de arquivo humano-legível, utilizado para consultas simples e com armazenamento em linhas.


Estrutura do Repositório

  • /dags/aulas:

    Possui os arquivos de definição das DAGs criadas durante o período de estudo da ferramente Airflow. Veja: /dags/aulas

  • /dags/projeto_airflow:

    Possui os arquivos de definição da DAG criada para o projeto prático que combina a utilização das ferramentas Airflow e Spark. veja: /dags/projeto_airflow

  • docker-compose.yaml

    Arquivo de configuração do ambiente de execução Airflow Veja: docker-compose.yaml

  • Dockerfile

    Arquivo para customização (extensão) da imagem base do Airflow, adicionando a biblioteca do PySpark Veja: Dockefile

  • /data

    Pasta de armazenamento dos arquivos de dados utilizados durante as aulas e o projeto Veja: /data



Como executar

Opcional

  1. Crie as variáveis de ambiente _AIRFLOW_WWW_USER_USERNAME e _AIRFLOW_WWW_USER_PASSWORD. Caso as variáveis não sejam criadas, o usuário e senha do Airflow terão valor "airflow" por padrão.

Passo a Passo

  1. Certifique-se de ter o Docker instalado.

  2. No terminal, dentro do diretório do repositório, execute (substituindo o nome e a tag):

    docker build . --tag extending_airflow:latest 
  3. Com a imagem personalizada criada, execute os containers utilizando:

    docker compose up -d 
  4. Utilize o comando docker ps para identificar o id do container executando o postgres, acesse o container utilizando o comando docker exec -it <id-do-container> bash

  5. Ao acessar o container do postgres, acesse o banco utilizando psql -U airflow e execute o comando CREATE DATABASE test;

  6. Acesse o Airflow, na página https://localhost:8080 utilizando o valor definido nas variáveis ou utilize o valor padrão

  7. Na aba Admin, acesse a opção conexões nela realize a criação de uma nova conexão do tipo "postgres", adicione as variáveis

    host 'postgres'
    login <user-definido-em-docker-compose>
    senha <senha-definido-em-docker-compose>
    port 5432
    database test 
    
  8. Ao navegar para a aba de DAG, é possível visualizar as DAGs criadas e executá-las

Projeto

  1. Para a execução do projeto, que possui o nome de DAG "Projeto_postgres", é necessário a execução da feramenta Minio (Modifique o usuário e a senha):

    docker run \
    --network=airflow_docker_default \
    -p 9000:9000 \
    -p 9001:9001 \
    --user $(id -u):$(id -g) \
    --name minio1 \
    -e "MINIO_ROOT_USER=ROOTUSER" \
    -e "MINIO_ROOT_PASSWORD=CHANGEME123" \
    -v ${HOME}/minio/data:/data \
    quay.io/minio/minio server /data --console-address ":9001"
  2. Acesse o link disponibilizado na execução acima com a identificação "API", realize o login e a criação de um novo bucket nomeando o "airflow"

  3. Retorne a página de conexões e crie uma nova conexão do tipo "aws", adicione o usuário ao campo AWS Access Key ID e a senha ao AWS Secret Access Key e no campo Extra Fields JSON adicione o seguinte JSON:

    {
        "endpoint_url": "http://minio1:9000"
    }
  4. Com esse passos é possível acionar a DAG do projeto.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages