Configuração do Delta Lake
O chart tdp-deltalake empacota jobs de manutenção 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:
- 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)
- 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.
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 manutenção 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 específicos
- DESCRIBE HISTORY -- registra histórico de alterações para auditoria
O chart utiliza o chart upstream do Spark como dependência para fornecer o runtime utilizado pelos jobs de manutenção.
Compatibilidade
| Componente | Versão |
|---|---|
| Spark | 4.0.0 |
| Delta Lake | 4.0.0 |
| Scala | 2.13 |
Instalação
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 manutenção
Configure os jobs de manutenção em maintenance.jobs:
maintenance:
enabled: true
jobs:
vacuum:
enabled: true
schedule: "0 2 * * *" # Diariamente às 2h
retentionHours: 168 # 7 dias
optimize:
enabled: true
schedule: "0 3 * * 0" # Semanalmente aos domingos às 3h
optimizeZOrder:
enabled: false
schedule: "0 1 * * 6" # Sábados às 1h
VACUUM
Remove arquivos que não são mais referenciados pelo Delta Log:
VACUUM delta.`s3a://warehouse/delta/tabela` RETAIN 168 HOURS;
O período de retenção padrão é 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 específicos:
OPTIMIZE delta.`s3a://warehouse/delta/tabela` ZORDER BY (coluna1, coluna2);
Configuração do Spark
Configure o runtime Spark utilizado pelos jobs de manutenção:
maintenance:
spark:
image:
repository: "registry.tecnisys.com.br/community/images/bitnamilegacy/spark"
tag: "4.0.0-debian-12-r0"
resources:
requests:
cpu: 1
memory: 2Gi
limits:
cpu: 2
memory: 4Gi
Habilitação da dependência Spark
A dependência do Spark é controlada via maintenance.spark.enabled:
maintenance:
spark:
enabled: true
Integrações
Para configuração de S3/MinIO e integração com outras ferramentas TDP (Trino, Spark, Airflow), consulte Integrações — Delta Lake.
Parâmetros principais
| Parâmetro | Descrição | Padrão |
|---|---|---|
maintenance.enabled | Habilitar jobs de manutenção | true |
maintenance.spark.enabled | Habilitar dependência Spark | true |
maintenance.spark.image.repository | Imagem Spark | registry.tecnisys.com.br/community/images/bitnamilegacy/spark |
maintenance.spark.image.tag | Tag da imagem Spark | 4.0.0-debian-12-r0 |
maintenance.jobs.vacuum.enabled | Habilitar job VACUUM | true |
maintenance.jobs.vacuum.schedule | Cron do VACUUM | 0 2 * * * |
maintenance.jobs.vacuum.retentionHours | Retenção VACUUM (horas) | 168 |
maintenance.jobs.optimize.enabled | Habilitar job OPTIMIZE | true |
maintenance.jobs.optimize.schedule | Cron do OPTIMIZE | 0 3 * * 0 |
maintenance.jobs.optimizeZOrder.enabled | Habilitar OPTIMIZE Z-ORDER | false |