O Data Plumber é um projeto em C++ que fornece um conjunto de funções para lidar com pipelines de processamento de dados. Com várias funções disponíveis, é permitido ao usuário a execução de várias operações úteis para data wrangling. Foi desenvolvido como projeto de A1 da matéria de Computação Escalável da FGV, ministrada no primeiro semestre de 2024 pelo Prof. Dr. Thiago Araújo.
Nosso projeto se baseia numa modelagem de pipeline de processamento de dados com 5 abstrações:
- Dataframe: estrutura de dados tabular que armazena os dados a serem processados.
- Handler: função que processa os dados de um Dataframe.
- Repository: estrutura de dados que armazena os Dataframes.
- Trigger: função que dispara a execução de um Handler.
- Queue: estrutura de dados que armazena os dataframes de entrada e saída de um Handler.
Para melhor distribuir os recursos computacionais, o Data Plumber utiliza a biblioteca thread do C++ para paralelizar a execução dos Handlers. Dessa forma, é possível processar os dados de forma mais eficiente e rápida. Mais especificamente, as queues servem como filas consumidor-produtor, remontando ao problema clássico de computação paralela.
Certifique-se de ter os seguintes requisitos instalados em sua máquina:
- Compilador C++
- Biblioteca padrão do C++
- Sistema operacional compatível (Windows, macOS, Linux)
- Biblioteca thread do C++
- Biblioteca sqlite3 do C++
- Para instalar a biblioteca sqlite3 no Linux, execute o comando
sudo apt install libsqlite3-dev
- Para instalar a biblioteca sqlite3 no Linux, execute o comando
- Biblioteca grpc++ do C++
- Para instalar a biblioteca grpc++ no Linux ou macOS, siga o tutorial em https://grpc.io/docs/languages/cpp/quickstart/
- Biblioteca protobuf do C++
- Instalar o grpc++ também instala o protobuf
- Bibliotecas grpcio e grpcio-tools do Python
- Provemos um requirements.txt para instalar as bibliotecas necessárias. Para instalar, execute
pip install -r requirements.txt - Também disponibilizamos um pyproject.toml e poetry.lock para instalar as dependências com o Poetry. Para instalar, execute
poetry install
- Provemos um requirements.txt para instalar as bibliotecas necessárias. Para instalar, execute
- Clone o repositório do Data Plumber em sua máquina local:
git clone https://github.com/atronee/Compesca-A1.git - Instale as dependências do projeto.
- No diretório do projeto, compile o código fonte usando cmake:
mkdir cmake-buildcd cmake-buildcmake ..make
- create the file temposExec.txt in the build folder:
touch temposExec.txt
- Execute o programa gerado:
./data_plumber - Para executar o cliente gRPC, execute o comando
python -m grpc_tools.protoc -I./rpc --python_out=./rpc --pyi_out=./rpc --grpc_python_out=./rpc ./rpc/contract.protoe depois executepython rpc/mock_client.py.