Saltar para o conteúdo principal
Versão Next

Configuração do Delta Lake

O chart tdp-deltalake empacota jobs de manutencao para tabelas Delta Lake 4.0.0, utilizando Apache Spark 4.0.0.

O que é o Delta Lake e por que ele precisa de manutenção?

O Delta Lake é um formato de tabela aberta que adiciona transações ACID ao armazenamento de objetos (S3/Ozone).

Em vez de gravar arquivos Parquet diretamente, o Delta Lake mantém um transaction log — um histórico de todas as operações (INSERT, UPDATE, DELETE, MERGE) realizadas na tabela.

Com o tempo, esse modelo gera dois tipos de acúmulo que precisam de limpeza periódica:

  1. Arquivos órfãos: arquivos Parquet que existem no S3 mas não são mais referenciados por nenhuma versão ativa da tabela (resultado de operações abortadas ou versões antigas)
  2. Versões antigas: o transaction log mantém histórico indefinidamente; sem limpeza, ele cresce sem limite

O chart tdp-deltalake não é uma aplicação contínua — ele cria Kubernetes CronJobs que rodam periodicamente (como um cron do Linux, mas gerenciado pelo Kubernetes) para realizar essa manutenção automaticamente.

Para saber mais

Consulte Delta Lake — Conceitos para uma visão completa do formato, transações ACID e casos de uso.

Visão geral

Este chart fornece CronJobs para manutencao agendada de tabelas Delta Lake:

  • VACUUM -- remove arquivos antigos não referenciados pelo transaction log
  • OPTIMIZE -- compacta arquivos pequenos em arquivos maiores
  • OPTIMIZE Z-ORDER -- otimiza o layout dos dados para consultas com filtros especificos
  • DESCRIBE HISTORY -- registra historico de alteracoes para auditoria

O chart utiliza o chart upstream do Spark como dependencia para fornecer o runtime utilizado pelos jobs de manutencao.

Compatibilidade

ComponenteVersão
Spark4.0.0
Delta Lake4.0.0
Scala2.13

Instalação

Terminal input
helm upgrade --install <release> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-deltalake \
-n <namespace> --create-namespace

Outros registros OCI podem existir na sua organização; use o catálogo interno de charts ou as instruções fornecidas pela Tecnisys.

Jobs de manutencao

Configure os jobs de manutencao em maintenance.jobs:

maintenance:
enabled: true
jobs:
vacuum:
enabled: true
schedule: "0 2 * * *" # Diariamente as 2h
retentionHours: 168 # 7 dias

optimize:
enabled: true
schedule: "0 3 * * 0" # Semanalmente aos domingos as 3h

optimizeZOrder:
enabled: false
schedule: "0 1 * * 6" # Sabados as 1h

VACUUM

Remove arquivos que não sao mais referenciados pelo Delta Log:

VACUUM delta.`s3a://warehouse/delta/tabela` RETAIN 168 HOURS;
Importante

O periodo de retencao padrão e 7 dias (168 horas). Não reduza abaixo de 7 dias em produção, pois isso pode causar perda de dados para consultas em andamento.

OPTIMIZE

Compacta arquivos pequenos em arquivos maiores para melhorar a performance de leitura:

OPTIMIZE delta.`s3a://warehouse/delta/tabela`;

OPTIMIZE com Z-ORDER

Otimiza o layout dos dados para consultas com filtros especificos:

OPTIMIZE delta.`s3a://warehouse/delta/tabela` ZORDER BY (coluna1, coluna2);

Configuração do Spark

Configure o runtime Spark utilizado pelos jobs de manutencao:

maintenance:
spark:
image:
repository: "docker.io/bitnamilegacy/spark"
tag: "4.0.0-debian-12-r0"
resources:
requests:
cpu: 1
memory: 2Gi
limits:
cpu: 2
memory: 4Gi

Habilitacao da dependencia Spark

A dependencia do Spark e controlada via maintenance.spark.enabled:

maintenance:
spark:
enabled: true

Configuração S3/MinIO

Os CronJobs requerem um Secret chamado minio-credentials com as seguintes chaves:

  • access-key
  • secret-key

Criar o Secret

Terminal input
kubectl -n <namespace> create secret generic minio-credentials \
--from-literal=access-key='<ACCESS_KEY>' \
--from-literal=secret-key='<SECRET_KEY>'

Configuração do endpoint S3

maintenance:
spark:
config:
"spark.hadoop.fs.s3a.endpoint": "http://<s3-host>.<namespace>.svc.cluster.local:9000"
"spark.hadoop.fs.s3a.path.style.access": "true"

Integração com TDP

Este chart faz parte do TDP e pode ser integrado com:

  • tdp-trino -- consultas SQL em tabelas Delta Lake
  • tdp-spark -- processamento Spark
  • tdp-airflow -- orquestracao de pipelines

Parametros principais

ParâmetroDescriçãoPadrão
maintenance.enabledHabilitar jobs de manutencaotrue
maintenance.spark.enabledHabilitar dependencia Sparktrue
maintenance.spark.image.repositoryImagem Sparkdocker.io/bitnamilegacy/spark
maintenance.spark.image.tagTag da imagem Spark4.0.0-debian-12-r0
maintenance.jobs.vacuum.enabledHabilitar job VACUUMtrue
maintenance.jobs.vacuum.scheduleCron do VACUUM0 2 * * *
maintenance.jobs.vacuum.retentionHoursRetencao VACUUM (horas)168
maintenance.jobs.optimize.enabledHabilitar job OPTIMIZEtrue
maintenance.jobs.optimize.scheduleCron do OPTIMIZE0 3 * * 0
maintenance.jobs.optimizeZOrder.enabledHabilitar OPTIMIZE Z-ORDERfalse