Pular para o conteúdo

Databricks · tema 12 de 30

Lakehouse e Delta Lake

32 min · 2 vídeos · 14 cards · 1 drill

Por que cai

É o coração da stack que o banco usa. A banca costuma abrir com 'o que é lakehouse' e fechar com 'por que Delta e não Parquet puro', que é onde se vê quem já quebrou um pipeline com escrita parcial e quem só leu o release note.

Pré-teste · 1 de 2

responda antes de ver

Um job Spark escreve 400 arquivos Parquet no S3 e falha no arquivo 250. O que um leitor que consulta a tabela nesse instante enxerga?

Confiança:

Vídeo · português · 12 min

Cobre os recursos na ordem em que a banca costuma perguntar. Assista com a pergunta 'o que o Parquet puro não faria aqui' em mente para cada recurso mostrado.

Em uma frase

Lakehouse é a arquitetura que traz garantias de data warehouse para arquivos abertos em object storage, e Delta Lake é o formato de tabela que entrega essas garantias com um log transacional ao lado dos arquivos Parquet.

O dilema que originou o Lakehouse

Antes, você escolhia um lado. O data lake era barato, aberto e aceitava qualquer coisa: log de app, JSON de API, PDF de contrato. Em troca, não garantia nada. A tabela era literalmente o que estivesse no diretório, então um job que morria na metade deixava dado parcial que o leitor consumia sem nenhum aviso.

O data warehouse garantia transação, schema e governança, mas cobrava caro por armazenamento acoplado a computação, prendia o dado em formato proprietário e não digeria bem dado não estruturado. O resultado prático em muitos bancos era manter os dois, copiar dado de um para o outro e passar o dia explicando por que os números divergem.

O Lakehouse recusa a escolha: um armazenamento só, em formato aberto, com as garantias na camada de metadados.

O que é um formato de tabela

Essa distinção derruba muito candidato:

CamadaExemplosDo que trata
Formato de arquivoParquet, ORC, Avro, JSONComo os bytes de um arquivo são codificados
Formato de tabelaDelta Lake, Apache Iceberg, Apache HudiQuais arquivos formam a tabela agora, qual é o schema, qual é o histórico

Delta Lake não substitui o Parquet. Os dados continuam em Parquet. O que o Delta acrescenta é o diretório _delta_log, com a sequência de commits que diz quais arquivos estão ativos em cada versão.

Como o Delta consegue ACID sobre object storage

O truque é que o commit não é mover dados, é gravar um arquivo de log. O escritor grava os arquivos Parquet novos em silêncio, invisíveis para todo mundo, e só no fim registra no log que aqueles arquivos entraram e quais saíram. Essa última gravação é atômica: ou o número de versão novo existe, ou não existe.

Com vários escritores, entra a concorrência otimistaCada escritor lê a versão atual, faz o trabalho e tenta registrar a próxima versão. Se outro chegou primeiro, ele relê o que mudou e tenta de novo. Nada é bloqueado enquanto o trabalho está em andamento.

Como o log também guarda estatísticas por arquivo (mínimo, máximo, nulos por coluna), o motor consegue pular arquivos que não podem conter o filtro. Isso é o data skipping, e é a base da performance.

Os recursos que a banca cobra

  1. 1Time travel: consultar a tabela em uma versão ou instante anterior, para auditar, comparar cargas e reverter erro.
  2. 2Schema enforcement: recusar a gravação fora do contrato, para o problema estourar no pipeline e não no relatório.
  3. 3Schema evolution: acrescentar coluna nova de propósito, quando a mudança é combinada.
  4. 4MERGE: upsert atômico, que é como se aplica CDC do core e como se atende exclusão de titular por LGPD.
  5. 5OPTIMIZE: compactar arquivos pequenos gerados por ingestão frequente.
  6. 6Z-ORDER: agrupar valores próximos das colunas de filtro nos mesmos arquivos para ampliar o data skipping.
  7. 7VACUUM: remover arquivos que nenhuma versão ativa referencia, respeitando a retenção.

Por que Parquet puro não basta

Esta é a pergunta-chave do tema, e a resposta melhor é uma lista curta de falhas concretas:

NecessidadeParquet puroDelta Lake
Escrita atômicaJob que morre no meio deixa dado parcial legívelCommit atômico no log: a versão existe ou não existe
Isolamento leitor/escritorNenhum: o leitor vê o diretório mudandoLeitor fixa uma versão e a lê inteira
Histórico e auditoriaSó com backup externoTime travel por versão ou timestamp
Contrato de schemaQualquer arquivo entra no diretórioEnforcement na gravação, evolution quando intencional
Upsert e exclusão pontualReescrita manual de partiçãoMERGE e DELETE atômicos

Se quiser outro ângulo

Curto e útil para separar os três termos, que é onde muita gente se enrola em voz alta. Bom para revisar na véspera.

Como cai na sabatina

Por que usar Delta e não simplesmente Parquet no S3?

Erros comuns

  • Dizer que Delta Lake é um formato de arquivo. Não é: o arquivo continua sendo Parquet. Delta é um formato de tabela, ou seja, Parquet mais um log transacional que diz quais arquivos formam a tabela agora.
  • Confundir Lakehouse com Databricks. Lakehouse é uma arquitetura; Databricks é uma plataforma que a implementa, e Iceberg e Hudi implementam a mesma ideia com outro formato.
  • Achar que time travel substitui backup. O histórico vive enquanto o VACUUM não remover os arquivos antigos e enquanto o log for retido; não é cópia independente nem sobrevive à exclusão da tabela.
  • Rodar VACUUM com retenção curta para economizar espaço. Isso apaga o histórico, quebra o time travel e pode derrubar leitores de longa duração que ainda apontam para arquivos antigos.
  • Usar Z-ORDER em coluna de alta cardinalidade única, como o id da transação, esperando ganho. Z-ORDER ajuda em colunas usadas em filtro, e o ganho vem do data skipping, não da ordenação em si.
  • Escrever com overwrite na trusted achando que é atômico no Parquet puro. Sem log transacional, um job que morre no meio deixa a tabela com parte dos arquivos novos e parte dos velhos.

Flashcards

Card 1 de 14

0 certos · 0 a rever

Drill

Qual recurso do Delta resolve esse problema?

Para cada situação real de pipeline bancário, diga qual recurso do Delta Lake você usaria. Responda em voz alta antes de conferir.

  1. 1.A carga de ontem entrou duplicada e o painel de crédito ficou errado. Você precisa comparar o antes e o depois.

  2. 2.Chegou o CDC do core de cadastro: linhas novas, alteradas e excluídas no mesmo lote.

  3. 3.Um produtor começou a mandar o campo valor como texto em vez de decimal e a tabela não pode aceitar isso.

  4. 4.O time de produto vai passar a enviar um campo novo, canal_originacao, e a mudança foi combinada.

  5. 5.A ingestão de PIX a cada minuto criou 300 mil arquivos de poucos kilobytes e as consultas ficaram lentas.

  6. 6.As consultas do time de fraude quase sempre filtram por agência e por data, e ainda leem arquivo demais.

  7. 7.Depois de uma reescrita grande, sobrou o dobro de armazenamento em arquivos que nenhuma versão ativa referencia.

Quiz · 1 de 2

Um time roda VACUUM com retenção de zero hora logo depois de cada carga para economizar armazenamento. Qual é o principal risco?

Explique para um gerente

Explique para um gerente de produto por que o relatório de ontem mudou de número hoje, e como o Delta Lake evita que isso volte a acontecer.

Responda em voz alta antes de seguir. Se travar numa palavra técnica, é sinal de que ainda não entendeu essa parte.

Perguntas de sabatina deste tema

  • · O que é um Lakehouse e que problema ele resolve que o data lake e o data warehouse não resolviam sozinhos?
  • · Por que usar Delta Lake se os dados já estão em Parquet no S3? Convença alguém que acha que é complexidade desnecessária.
Responder no simulado

Para ir além