O trabalho consiste em apresentar uma solução completa de engenharia de dados usando as ferramentas que aprendemos no curso e acessando como fonte de dados a A API do OlhoVivo da SPTrans.
O grupo optou por montar uma estrutura de dados direcionada à gestão de eficiência operacional.
Para isso, pensamos em gerar informações sobre os desvios emcontrados em termos de tempo (previsão de chegada do onibus em uma parada) e fazer a comparação com os dados encontrados que indicam quando o onibus passou pela parada efetivamente.
Para isso, fizemos uma exploração incial dos dados coletados e montamos uma arquitetura que comtemplou os dados necessários para fazermos uma apresentação das informações.
A arquitetura consiste basicamente em:
- Docker Composer
- Jupyter Notebook (spark)
- Minio
- ClickHouse
- Metabase
A SPTrans disponibilizou para desenvolvedores uma API, que pode ser acessada em:
https://www.sptrans.com.br/desenvolvedores/
Foi necessário fazer o cadastro para geração de token de acesso em: https://www.sptrans.com.br/desenvolvedores/login-desenvolvedores/
Os passos principais são:
Criar diretório para clonar repositório git
git clone [email protected]:ftfarias/fia-trabalho.git
Os serviços necessários estão configurados no arquivo docker-compose.yml
, que pode ser encontrado no diretório docker/
.
Porém, antes de subir os serviços, é necessário fazer algumas configurações iniciais:
- criação dos diretórios do banco de dados (Postgres)
No diretório docker/
:
Se estiver usando Windows:
.\script.bat
Se estiver usando MacOS:
.\script_mac.bat
- Setup pgAdmin db
Subir o serviço pgadmin
com Docker Compose:
docker compose up pgadmin
Acessar o serviço em:
- PGAdmin:
http://localhost:5433
Credenciais:
Login: [email protected]
Password: admin
Passos:
Add New Server
Register > Server
General > Name: db
Connection > Hostname: db
Connection > Username: admin
Connection > Password: admin
Save password: True
Save
Criar os databases:
$ docker compose up -d
PostgreSQL init process complete; ready for start up.
$ docker ps
Depois que os serviços subirem, acessá-los nos links abaixo: (revisar)
- Airflow:
http://localhost:8080
- Spark (Jupyter Notebook):
http://localhost:8889
- Minio:
http://localhost:9051
- Metabase:
http://localhost:3000
- PGAdmin:
http://localhost:5433
- ClickHouse:
http://localhost:18123
Para parar os serviços
$ docker compose down
Foi usado no projeto:
- Anaconda:
- Python: Python 3.x
- Jupyter Notebook (conda install jupyter notebook)
Subir os csv do diretorio gtfs para o bucket raw