Este projeto, denominado Postgres GCS Beam - Bike Rental, é uma solução para processamento de dados relacionados ao aluguel de bicicletas. Ele utiliza o Apache Beam para criar pipelines de processamento de dados que movem e transformam dados entre o PostgreSQL (Postgres), o Google Cloud Storage (GCS) e diferentes camadas de dados, como landing, raw, trusted e refined.
O projeto está organizado nas seguintes pastas e arquivos:
-
utils/gcs: Contém utilitários relacionados ao Google Cloud Storage, incluindo scripts para transferir dados entre diferentes camadas.
-
utils/postgres: Aqui estão os utilitários específicos para interação com o PostgreSQL.
-
utils.postgres.generate.py: Um script Python responsável por gerar dados simulados para o PostgreSQL.
-
utils.gcs.landing_to_raw.py: Um utilitário para transferir dados da camada landing para a camada raw no GCS.
-
utils.gcs.raw_to_trusted.py: Utilitário que move dados da camada raw para a camada trusted no GCS após aplicar transformações.
-
utils.gcs.trusted_to_refined.py: Utilitário que move dados da camada trusted para a camada refined no GCS.
-
pipeline_beam/landing_to_raw.py: Um pipeline Apache Beam para processar dados da camada landing para a camada raw.
-
pipeline_beam/raw_to_trusted.py: Outro pipeline Apache Beam para transformar dados da camada raw para a camada trusted.
-
pipeline_beam/trusted_to_refined.py: Pipeline Apache Beam para transformar dados da camada trusted para a camada refined.
Antes de executar qualquer script ou pipeline, certifique-se de configurar corretamente as credenciais do Google Cloud Storage e PostgreSQL.
-
Google Cloud Storage: Configure as seguintes variáveis de ambiente:
GCS_BUCKET_NAME: Nome do bucket no GCSGOOGLE_APPLICATION_CREDENTIALS: Caminho para o arquivo de credenciais do Google Cloud
-
PostgreSQL: Configure as seguintes variáveis de ambiente:
PG_HOST: Host do PostgreSQLPG_USER: Usuário do PostgreSQLPG_PASSWORD: Senha do PostgreSQLPG_DB: Nome do banco de dados
# Instalar dependências
make install
# Ou instalar como pacote Python
pip install -e .O projeto inclui um Makefile com comandos pré-configurados:
# Iniciar PostgreSQL com Docker
make up
# Gerar dados de exemplo no PostgreSQL
make run-postgres-generate
# Executar pipelines Apache Beam
make run-load-raw
make run-load-trusted
make run-load-refined
# Executar scripts GCS diretamente
make run-gcs-landing-to-raw
make run-gcs-raw-to-trusted
make run-gcs-trusted-to-refined
# Parar containers
make downSe preferir executar manualmente, use o PYTHONPATH:
# Configurar PYTHONPATH
export PYTHONPATH=$(pwd)
# Executar pipelines
python pipeline_beam/landing_to_raw.py
python pipeline_beam/raw_to_trusted.py
python pipeline_beam/trusted_to_refined.py
# Executar scripts GCS
python utils/gcs/landing_to_raw.py
python utils/gcs/raw_to_trusted.py
python utils/gcs/trusted_to_refined.py
# Gerar dados PostgreSQL
python utils/postgres/main.pyPara executar o PostgreSQL com Docker:
docker-compose up -dO projeto utiliza a seguinte estrutura de pastas no GCS:
raw/: Dados brutos em formato Parquettrusted/: Dados processados em formato CSVrefined/: Dados refinados em formato CSV
Consulte o arquivo gcs_setup.md para instruções detalhadas sobre como configurar o Google Cloud Storage.
Contribuições são bem-vindas! Sinta-se à vontade para criar pull requests, reportar problemas ou sugerir melhorias.