Arquitetura Lakehouse com Databricks: Delta Lake, Unity Catalog e Camada Bronze Governada

Guia tecnico para converter Parquet em tabela Delta gerenciada com rastreabilidade via _delta_log

Por Fábio Linhares • Instituto Infnet

BASE
Contexto técnico e objetivo da fundação Bronze
Compreender por que Parquet isolado não substitui uma tabela Delta governada.
Resumo do material-base enviado no job

Este conjunto de questões marca uma transição importante no aprendizado. Até aqui, o leitor pode já ter trabalhado com arquivos, transformações e persistência de dados. Agora, o desafio sobe de nível: não basta mais manipular dados; é preciso começar a estruturar o ambiente em que esses dados passam a existir como ativos governados, rastreáveis e confiáveis. O foco deste TP é justamente a fundação do Lakehouse com Delta Lake e Unity Catalog, a implementação da camada Bronze e a compreensão do que acontece “sob o capô” quando arquivos comuns passam a se tornar tabelas inteligentes e governadas.

Ao longo das questões, o leitor enfrentará desafios que exigem mais do que execução mecânica de comandos. Será necessário compreender a hierarquia de governança do Unity Catalog, criar e organizar objetos como catalog, schema e volume, converter arquivos Parquet em tabelas Delta, distinguir uma tabela meramente existente de uma tabela realmente gerenciada, inspecionar a estrutura física de armazenamento e interpretar o papel da pasta `_delta_log` e dos arquivos JSON de transação. Em outras palavras, o problema aqui não é apenas “como fazer”, mas “o que estou criando”, “por que isso existe” e “como sei que isso é confiável”.

Se conseguir resolver satisfatoriamente todas as questões, o leitor demonstrará um conjunto de competências muito mais robusto do que a simples capacidade de usar o Databricks. Ele mostrará que entende os fundamentos da governança em um Lakehouse, sabe estruturar namespaces de dados com Unity Catalog, compreende a lógica da arquitetura Medallion e consegue implementar uma camada Bronze de forma coerente com a ideia de ingestão bruta com histórico. Também demonstrará que é capaz de transformar arquivos em tabelas Delta governadas, entendendo que o valor técnico dessa transformação não está só no formato, mas nas garantias operacionais e transacionais que passam a existir.

Do ponto de vista técnico, quem conclui esse percurso passa a dominar skills centrais de engenharia de dados em ambiente moderno. Entre elas estão a criação de objetos de governança, a distinção entre arquivo, volume, tabela, schema e catalog, a conversão de dados persistidos em Parquet para tabelas Delta, a noção de managed table, a inspeção da estrutura física de uma tabela e a capacidade de explicar por que o Delta Lake oferece confiabilidade que o Parquet isolado não oferece. Isso significa começar a pensar menos como alguém que apenas armazena arquivos e mais como alguém que projeta e administra ativos de dados sob regras, contexto e controle.

Sequência operacional sugerida
Objetivo do material: fundar a base do Lakehouse com governanca no Unity Catalog e persistencia transacional no Delta Lake.
Ordem de execucao recomendada: catalog -> schema -> volume -> ingestao Bronze -> tabela Delta gerenciada -> validacao fisica.
Resultado esperado: sair do nivel de arquivo solto em Parquet para ativo governado, auditavel e confiavel.
Mapa mental mínimo antes de executar
Catalog é o contêiner mais alto da governança. Ele define o domínio lógico em que schemas, tabelas e volumes passam a existir.
Schema é a subdivisão dentro do catalog. Em iot_bronze, o nome já comunica domínio de IoT e camada Bronze da arquitetura Medallion.
Volume não é tabela. Ele é armazenamento governado para arquivos, útil para receber insumos brutos antes da materialização tabular.
Tabela é o objeto lógico consultável. O nome registrado no Unity Catalog é a face lógica; a pasta física em storage é a face material.
Erros mentais comuns nesta etapa

Confundir arquivo com tabela, volume com tabela e Parquet com Delta. Parquet puro entrega arquivos colunares; Delta entrega arquivos mais um livro-caixa transacional que controla estado, versões e consistência.

EX.01
Criar a hierarquia de governança no Unity Catalog
Estabelecer catalog e schema como namespace oficial dos ativos de dados.
O que a questão pede
Criar sensorflow_catalog e sensorflow_catalog.iot_bronze, validando a existência dos objetos.
Comandos de referência
CREATE CATALOG IF NOT EXISTS sensorflow_catalog;
CREATE SCHEMA IF NOT EXISTS sensorflow_catalog.iot_bronze;

SHOW CATALOGS;
SHOW SCHEMAS IN sensorflow_catalog;
Resultado esperado

Com catalog e schema criados, a solução passa a ter namespace governado para tabelas e volumes do domínio de IoT.

Como defender a decisão
O catalog representa o domínio organizacional principal. Ele é o nível mais alto da governança e concentra as regras do conjunto de ativos.
O schema organiza a camada de trabalho dentro desse domínio. Em iot_bronze, a escolha do nome não é estética: ela deixa explícitos camada e assunto.
Se o aluno conseguir explicar a hierarquia catalog.schema.objeto, ele mostra que entende namespace governado, e não apenas sintaxe SQL.
EX.02
Implementar volume e converter Parquet em Delta Bronze
Garantir ingestão bruta com histórico e materialização como tabela Delta.
O que a questão pede
Criar volume governado para os arquivos do TP2 e materializar a camada Bronze no schema iot_bronze.
O que isso quer dizer de verdade
A camada Bronze representa ingestão bruta com histórico. A regra é preservar o dado de entrada com o mínimo de interferência, priorizando rastreabilidade e reprocessamento.
O volume serve para guardar os Parquets do TP2 sob governança. A tabela Bronze é outro objeto: ela expõe esse conteúdo como ativo Delta consultável e administrável.
Se houver mais de um conjunto relevante de Parquets no TP2, faz sentido criar mais de uma tabela Bronze. O importante é manter coerência entre fonte, nome e responsabilidade de cada tabela.
Comandos de referência
CREATE VOLUME IF NOT EXISTS sensorflow_catalog.iot_bronze.raw_files;

-- exemplo de leitura dos parquets do TP2
SELECT *
FROM parquet.`/Volumes/sensorflow_catalog/iot_bronze/raw_files/tp2/*.parquet`;

CREATE OR REPLACE TABLE sensorflow_catalog.iot_bronze.sensor_events_bronze
USING DELTA
AS
SELECT *
FROM parquet.`/Volumes/sensorflow_catalog/iot_bronze/raw_files/tp2/*.parquet`;
Volume não é tabela

O volume é armazenamento governado para arquivos. A tabela é um objeto lógico registrado no catálogo. Guardar Parquet no volume resolve organização física; criar a tabela Delta resolve governança tabular, descoberta e operação confiável.

Ponto crítico

Salvar Parquet em diretório não é suficiente: o exercício exige objeto tabular Delta registrado e governado no Unity Catalog.

EX.03
Validar managed table e interpretar _delta_log
Comprovar rastreabilidade, consistência e versionamento transacional da Bronze.
O que a questão pede
Confirmar que a tabela é gerenciada, localizar armazenamento físico e explicar a função do log transacional do Delta.
Comandos de referência
DESCRIBE DETAIL sensorflow_catalog.iot_bronze.sensor_events_bronze;
DESCRIBE EXTENDED sensorflow_catalog.iot_bronze.sensor_events_bronze;

-- use a location retornada para inspecionar a pasta fisica
%fs ls <location-da-tabela>
dbutils.fs.ls("<location-da-tabela>")
%fs ls <location-da-tabela>/_delta_log

SELECT *
FROM json.`<location-da-tabela>/_delta_log/00000000000000000000.json`;
Managed vs external
Se a intenção é criar managed table, não declare LOCATION manual no CREATE TABLE. Deixe o Databricks controlar o ciclo de vida físico da tabela.
A validação prática é procurar MANAGED e a Location retornada no DESCRIBE EXTENDED ou no DESCRIBE DETAIL.
Tabela external aponta para um caminho definido explicitamente. Tabela managed continua sendo um objeto lógico do catálogo, mas sua área física fica sob administração da plataforma.
Como explicar a confiabilidade do Delta
Parquet puro é apenas conjunto de arquivos. Ele não mantém sozinho uma narrativa transacional do que foi adicionado, removido ou alterado.
Delta Lake combina arquivos de dados com a pasta _delta_log, onde ficam commits, metadados e ações que permitem reconstruir um snapshot consistente da tabela.
Essa combinação viabiliza garantias ACID, leitura consistente, versionamento e auditoria temporal. Em termos simples: Delta não é "Parquet melhorado"; é Parquet com controle transacional explícito.
Interpretação técnica

A pasta _delta_log registra versões da tabela, operações de escrita, metadados e checkpoints lógicos. É isso que permite explicar por que o leitor enxerga uma tabela consistente, e não apenas um diretório com arquivos espalhados.

CHECK
Checklist final de validação
Confirmar que os artefatos criados atendem os requisitos de governança e confiabilidade.
Validação mínima antes da entrega
1) Catalog sensorflow_catalog criado e visivel no Unity Catalog.
2) Schema iot_bronze e volume raw_files criados no namespace correto.
3) Tabela Bronze convertida para DELTA dentro de sensorflow_catalog.iot_bronze.
4) Tabela confirmada como managed table, sem LOCATION manual no create e com MANAGED identificado no describe.
5) Location descoberta com DESCRIBE DETAIL ou DESCRIBE EXTENDED e inspecionada com %fs ls ou dbutils.fs.ls.
6) Pasta _delta_log localizada, JSON de transacao aberto e papel do log explicado tecnicamente.