O readme em português está disponível aqui: README-PT
- Este projeto extrai dados de cervejarias do endpoint da API https://api.openbrewerydb.org/breweries.
- Transforma, limpa os dados e persiste os dados nos formatos json e parquet, incluindo uma visualização agregada com a quantidade de cervejarias por tipo e localização.
- Carrega os dados no banco de dados PostgreSQL para capacidades adicionais de consulta.
- Defina as variáveis de ambiente das Chaves da AWS nos arquivos docker-compose para escrever os dados no Armazenamento S3.
- Localização do Bucket S3 para Gravar Arquivos do Data Lake (Opcional)
Se não forem definidas, os dados ainda serão escritos localmente no contêiner, mas a escrita de dados no armazenamento em nuvem S3 será ignorada.
- Git
- Docker
- Docker Compose
- Clone o repositório:
git clone https://github.com/vitorjpc10/etl-breweries.git
- Mova-se para o repositório recém-clonado:
cd etl-breweries
-
Construa e execute os contêineres Docker:
docker-compose up --build
-
Os dados serão extraídos, transformados e carregados no banco de dados PostgreSQL com base na lógica em
scripts/main.py
. -
Depois de construídos, execute o seguinte comando para executar consultas nas tabelas de clima e tráfego do contêiner do banco de dados PostgreSQL:
docker exec -it etl-breweries-db-1 psql -U postgres -c "\i queries/queries.sql"
Use
\q
no terminal para sair da consulta, há 2 consultas no total.
-
Mova-se para o diretório Airflow:
cd airflow
-
Construa e execute os contêineres Docker:
docker-compose up airflow-init --build
docker-compose up
-
Depois que todos os contêineres forem construídos, acesse localmente (http://localhost:8080/) e acione a DAG etl_dag (o nome de usuário e a senha são admin por padrão).
-
Depois que a DAG for compilada com sucesso, execute o seguinte comando para executar consultas nas tabelas de clima e tráfego:
docker exec -it airflow-postgres-1 psql -U airflow -c "\i queries/queries.sql"
Use
\q
no terminal para sair da consulta, há 2 consultas no total.
- O projeto usa Docker e Docker Compose para containerização e orquestração para garantir ambientes de desenvolvimento e implantação consistentes.
- Volumes Docker são utilizados para persistir dados do PostgreSQL, garantindo que os dados permaneçam intactos mesmo se os contêineres forem interrompidos ou removidos.
- O banco de dados PostgreSQL é selecionado para armazenamento de dados devido à sua confiabilidade, escalabilidade e suporte para consultas SQL.
- Python puro, SQL e PySpark são usados para manipulação de dados para garantir um processamento de dados leve e eficiente.
- As consultas SQL para geração de relatórios são armazenadas em arquivos separados (por exemplo,
queries.sql
). Isso permite a fácil modificação das consultas e fornece uma maneira conveniente de visualizar os resultados. - Para gerar os relatórios, as consultas SQL são executadas dentro do contêiner do banco de dados PostgreSQL. Esta abordagem simplifica o processo e garante que as consultas possam ser facilmente executadas e modificadas conforme necessário.
- Os dados extraídos são salvos localmente (pastas 'data') e no AWS S3 (Opcional) e montados nos contêineres, incluindo os dados brutos provenientes da API e os transformados, ambos em formato JSON e Parquet. Essa configuração oferece simplicidade (princípio KISS) e flexibilidade, permitindo fácil acesso aos dados.
- Uma visualização agregada com a quantidade de cervejarias por tipo e localização é criada para fornecer insights sobre os dados.
- A orquestração por meio do Apache Airflow garante a separação de tarefas e estabelece uma estrutura para executar e monitorar o processo ETL. Ele fornece alertas de notificação para retentativas ou falhas de tarefa, aprimorando a robustez do pipeline.