Este é um projeto de exemplo que demonstra um processo de ETL (Extração, Transformação e Carga) de dados usando Python, Polars e AWS LocalStack. Ele foi projetado para extrair informações de um artista musical do Spotify, transformar esses dados em diferentes formatos e carregá-los em um "datalake" local usando o LocalStack.
O objetivo final é fazer uma análise sobre os 3 tipos de arquivo gerado, CSV, Parquet e JSON, e verificar qual o melhor formato para armazenar os dados.
A análise final é salva em um arquivo do tipo LOG localmente
Alguns pontos interessantes:
- Substituição do
requests
pelohttpx
para melhorar a performance da extração de dados. - Uso do
Polars
para transformar os dados extraídos em diferentes formatos. - Uso do
LocalStack
para simular um ambiente AWS localmente.
Apresenta um UI bem interessante
- Uso do
Docker Compose
para configurar o LocalStack e o ambiente de desenvolvimento. - Uso do
Make
para automatizar a execução de tarefas comuns. - Uso do
Mkdocs
para gerar a documentação do projeto.
- Docker: Instalação do Docker
- Make (opcional, mas recomendado): Instalação do Make
- Poetry: Instalação do Poetry
-
Clone este repositório:
git clone https://github.com/lvgalvaofilho/datalake-format-explorer.git
-
Navegue até o diretório do projeto:
cd datalake-format-explorer
-
Crie um arquivo
.env
na raiz do projeto com suas credenciais do Spotify:SPOTIFY_CLIENT_ID=sua-chave-de-cliente SPOTIFY_CLIENT_SECRET=sua-chave-secreta
-
Instale as dependências do projeto com Poetry:
poetry install
-
Ative o ambiente virtual do Poetry:
poetry shell
-
Inicie o Docker Compose para configurar o LocalStack:
docker-compose up
-
Execute a pipeline ETL com o Make, substituindo
"Nome do Artista"
pelo nome do artista que você deseja processar:make run artist="Nome do Artista"
make run artist="Beatles"
Certifique-se de usar aspas duplas ao redor do nome do artista se o nome tiver espaços.
-
Após a execução, os dados do artista serão extraídos, transformados em diferentes formatos (CSV, JSON e Parquet) e carregados em um "datalake" local.
-
Os arquivos gerados podem ser encontrados na pasta
data
do projeto e também serão enviados para o LocalStack S3, onde você pode acessá-los usando as ferramentas do LocalStack. -
É gerado um arquivo análise.log com o resultado da análise de tamanho dos arquivos gerados.