Este projeto demonstra a implementação de um pipeline de ingestão de dados IoT de alta performance utilizando o Databricks ZeroBus Ingestion (parte da suíte LakeFlow Connect). O objetivo é realizar a ingestão serverless de eventos de telemetria diretamente para tabelas Delta Lake, reduzindo custos operacionais e complexidade de infraestrutura.
Diferente do fluxo tradicional que exige a manutenção de um cluster Spark (Structured Streaming) ativo 24/7 para ler de um Message Broker, o ZeroBus atua como um conector nativo gerenciado pelo Databricks.
- Event Source (Simulado/IoT): Dispositivos ou aplicações geram eventos JSON de telemetria.
- Ingestion Layer (ZeroBus SDK): O script Python utiliza o SDK do ZeroBus para despachar os eventos de forma resiliente.
- Transport & Buffer: O Databricks assume o gerenciamento do buffer e a garantia de entrega (at-least-once).
- Storage Layer (Delta Lake): Os dados são persistidos automaticamente em tabelas Bronze (Raw) dentro do Unity Catalog.
Destaque de Engenharia: Esta abordagem elimina o "Spark Tax" (custo fixo de clusters ociosos) e simplifica drasticamente o gerenciamento de checkpoints e estados.
O ZeroBus representa a evolução da ingestão no Lakehouse. Seus principais diferenciais são:
- Baixíssima Latência: Ingestão quase em tempo real sem o overhead da JVM do Spark.
- Escalabilidade Transparente: Ajuste automático de recursos conforme o volume de dados aumenta.
- Eficiência de Custo: Modelo de computação serveless focado exclusivamente no volume de I/O processado.
├── writing_data_databricks.py # Script de ingestão utilizando ZeroBus SDK
├── pyproject.toml # Dependências e configuração (PDM/Poetry)
├── solution.drawio # Diagrama detalhado da arquitetura
├── .env.example # Template de variáveis de ambiente
└── README.md # Documentação do projeto
- Databricks Workspace: Unity Catalog habilitado.
- Permissões: Service Principal com privilégios de USE CATALOG, USE SCHEMA e MODIFY na tabela alvo.
- Python: Versão 3.12 ou superior.
Clone o repositório e crie o seu arquivo de configuração local:
git clone <url-do-repo>
cd Iot_streaming
cp .env.example .env
##### Edite o .env com as suas credenciais de acesso:
DATABRICKS_ENDPOINT=https://<sua-instancia>.azuredatabricks.net
WORKSPACE_URL=https://<sua-instancia>.azuredatabricks.net
TABLE_NAME=seu_catalogo.seu_schema.iot_telemetry
CLIENT_ID=<seu-client-id>
CLIENT_SECRET=<seu-client-secret># Via Pip
pip install -r requirements.txt
# Via PDM (Recomendado)
pdm installpython writing_data_databricks.pyPara garantir o sucesso da execução, valide os seguintes pontos no seu Workspace:
A tabela de destino deve existir previamente ou o Service Principal utilizado deve possuir permissões de CREATE TABLE no schema alvo.
CREATE TABLE IF NOT EXISTS <seu_catalogo>.<seu_schema>.fea_device_telemetry(
event_id STRING,
device_id STRING,
temperature DOUBLE,
vibration DOUBLE,
event_timestamp TIMESTAMP,
ingestion_timestamp TIMESTAMP
)
USING DELTARepositório e projeto criados para um teste rápido e validação de aplicabilidade da solução.
Para maiores informações, acesse a documentação da API do Databricks ZeroBus https://docs.databricks.com/aws/en/ingestion/zerobus-overview