Skip to content

luizfernandoOliveiraa/Iot_streaming

Repository files navigation

⚡ IoT Streaming com Databricks ZeroBus (LakeFlow Connect)

Databricks Python 3.12+ Status

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.


🏗️ Arquitetura da Solução

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.

Fluxo de Dados:

  1. Event Source (Simulado/IoT): Dispositivos ou aplicações geram eventos JSON de telemetria.
  2. Ingestion Layer (ZeroBus SDK): O script Python utiliza o SDK do ZeroBus para despachar os eventos de forma resiliente.
  3. Transport & Buffer: O Databricks assume o gerenciamento do buffer e a garantia de entrega (at-least-once).
  4. 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.


🚀 Sobre o ZeroBus Ingestion

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.

📂 Estrutura do Repositório

├── 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

🛠️ Configuração e Instalação

Pré-requisitos

  • 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.

🛠️ Configuração e Instalação

1. Preparação do Ambiente

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>

2. Instalação de Dependências

# Via Pip
pip install -r requirements.txt

# Via PDM (Recomendado)
pdm install

3. Execução do Script

python writing_data_databricks.py

⚙️ Provisionamento no Databricks (Checklist)

Para garantir o sucesso da execução, valide os seguintes pontos no seu Workspace:

1. Criação da Tabela

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 DELTA

Repositó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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages