Vetores de exclusão no Databricks
Os vetores de exclusão são um recurso de otimização de armazenamento que acelera as modificações em tabelas. Por default, excluir uma única linha exige a reescrita de todo o arquivo Parquet que contém esse registro. Os vetores de exclusão evitam essa sobrecarga. Quando os vetores de exclusão estão ativados, as operações DELETE, UPDATE e MERGE marcam as linhas como modificadas sem reescrever o arquivo Parquet. Em seguida, as leituras resolvem o estado atual da tabela aplicando as modificações registradas nos vetores de exclusão.
Databricks recomenda o uso Databricks Runtime 14.3 LTS ou superior para gravar tabelas com vetores de exclusão, a fim de aproveitar todas as otimizações. Para ler tabelas com vetores de exclusão ativados, use Databricks Runtime 12.2 LTS ou superior.
No Databricks Runtime 14.2 e versões superiores, as tabelas com vetores de exclusão suportam concorrência em nível de linha. Consulte Concorrência em nível de linha.
Para atualizações preditivas de E/S, o Photon usa vetores de exclusão para acelerar as operações DELETE, MERGE e UPDATE . Consulte Usar E/S preditiva para acelerar as atualizações.
Habilitar vetores de exclusão
Nas configurações workspace , você pode habilitar vetores de exclusão em novas tabelas ao usar um SQL warehouse ou Databricks Runtime 14.3 LTS ou superior. As configurações padrão variam de acordo com a região; consulte Ativar vetores de exclusão automaticamente.
Os vetores de exclusão não são habilitados pelo site default para a visualização materializada e as tabelas de transmissão armazenadas em Hive metastore.
Para habilitar ou remover manualmente o suporte para vetores de exclusão em qualquer tabela ou view, incluindo tabelas de transmissão e visualização materializada, use a propriedade de tabela enableDeletionVectors . Para habilitar vetores de exclusão em uma tabela ao criar ou alterar uma tabela:
-- For Delta tables
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
Não é possível usar uma instrução ALTER para habilitar ou remover vetores de exclusão em uma view materializada ou tabela de transmissão.
Para tabelas Iceberg, use iceberg.enableDeletionVectors em vez de delta.enableDeletionVectors.
Ao ativar vetores de exclusão, o Databricks atualiza o protocolo da tabela. Após a atualização, os clientes sem suporte para vetor de exclusão não conseguem ler a tabela. Consulte a compatibilidade e os protocolos de recursosDelta Lake.
No Databricks Runtime 14.1 e versões superiores, você pode remover o recurso da tabela de vetores de exclusão para permitir a compatibilidade com outros clientes. Consulte Remover um recurso de tabela Delta Lake e fazer downgrade do protocolo da tabela.
Aplicar alterações nos arquivos de dados Parquet
Os vetores de exclusão indicam alterações nas linhas como exclusões lógicas que modificam os arquivos de dados Parquet existentes na tabela. Essas alterações são aplicadas fisicamente quando um dos seguintes eventos causa a reescrita dos arquivos de dados:
- Um comando
OPTIMIZEé a execução na mesa. - A compactação automática aciona a reescrita de um arquivo de dados com um vetor de exclusão.
REORG TABLE ... APPLY (PURGE)é a execução contra a mesa.
Os eventos relacionados à compactação de arquivos não oferecem garantias estritas de resolução das alterações registradas nos vetores de exclusão. Algumas alterações registradas nos vetores de exclusão podem não ser aplicadas fisicamente se os arquivos de dados de destino não forem candidatos à compactação de arquivos. REORG TABLE ... APPLY (PURGE) reescreve todos os arquivos de dados que contêm registros com modificações registradas usando vetores de exclusão. See REORG TABLE.
Excluir fisicamente os dados antigos
Os dados modificados ainda podem existir nos arquivos de dados antigos de uma tabela após uma operação de limpeza. Você pode querer remover fisicamente os dados, por exemplo, para reduzir os custos de armazenamento com seu provedor cloud ou para cumprir as exigências GDPR .
execução VACUUM para excluir fisicamente os arquivos antigos. A operação REORG TABLE ... APPLY (PURGE) cria uma nova versão da tabela quando é concluída. Para remover completamente os arquivos excluídos das versões anteriores da tabela, você deve definir o limite de retenção para VACUUM para o carimbo de data/hora de conclusão das operações de limpeza. Consulte Excluir apenas metadados para forçar a reescrita de dados.
Melhore o desempenho para mesas grandes
Para melhorar o desempenho ao limpar dados excluídos logicamente em tabelas grandes, defina spark.databricks.delta.reorg.purgeMode como rows. Por exemplo, defina esta configuração quando você limpar dados manualmente com REORG TABLE ... APPLY (PURGE) ou quando você remover vetores de exclusão com ALTER TABLE DROP FEATURE deletionVectors.
Por default, spark.databricks.delta.reorg.purgeMode é definido como all. Em tabelas grandes, essa operação pode ser lenta porque as operações de limpeza precisam examinar todos os rodapés dos arquivos Parquet para verificar se há dados de colunas excluídos e linhas excluídas logicamente.
O valor rows limita as operações para lidar apenas com arquivos que contenham linhas excluídas logicamente. Em tabelas grandes, isso pode melhorar o desempenho se muitos arquivos não contiverem linhas excluídas logicamente e a tabela não tiver colunas descartadas.
Compatibilidade do cliente
Databricks usa vetores de exclusão para alimentar a E/S preditiva para atualizações no Photon-enabled compute. Consulte Usar E/S preditiva para acelerar as atualizações.
O suporte ao uso de vetores de exclusão para leituras e gravações varia de acordo com o cliente.
A tabela a seguir mostra as versões de cliente necessárias para leitura e gravação de tabelas com vetores de exclusão ativados e especifica quais operações de gravação usam vetores de exclusão:
Cliente | Escrever vetores de exclusão | Leia vetores de exclusão |
|---|---|---|
Databricks Runtime com Photon | Oferece suporte a | É necessário o site Databricks Runtime 12.2 LTS ou acima. |
Databricks Runtime sem Photon | Suporta | É necessário o site Databricks Runtime 12.2 LTS ou acima. |
OSS Apache Spark com OSS Delta Lake | Suporta | Requer o OSS Delta 2.3.0 ou acima. |
Beneficiários do Delta Sharing | Não há suporte para escrita em tabelas Delta Sharing . | Databricks: Requer Databricks Runtime 14.1 ou superior. código aberto Apache Spark: Requer |
Para obter suporte com outros clientes, consulte a documentação de integrações do OSS Delta Lake.
Limitações
- O UniForm Iceberg v2 não suporta vetores de exclusão. O Apache Iceberg v3 suporta vetores de exclusão em tabelas com UniForm habilitado. Consulte Usar recurso Apache Iceberg v3.
- O senhor não pode usar uma instrução GENERATE para gerar um arquivo de manifesto para uma tabela que tenha arquivos usando vetores de exclusão. Para gerar um manifesto, primeiro execute a instruçãoREORG TABLE... APPLY (PURGE) e, em seguida, execute a instrução
GENERATE. É preciso garantir que nenhuma operação de gravação concorrente esteja em execução quando o senhor enviar a declaraçãoREORG. - Você não pode gerar arquivos de manifesto incrementalmente para uma tabela com vetores de exclusão ativados (por exemplo, definindo a propriedade da tabela
delta.compatibility.symlinkFormatManifest.enabled=true). - Se você habilitar vetores de exclusão em uma view materializada ou tabela de transmissão e, posteriormente, remover esses vetores, eles não se aplicarão a gravações futuras na view ou tabela, mas os vetores de exclusão existentes permanecerão.
- O senhor não pode fazer downgrade do protocolo da tabela depois de ativar os vetores de exclusão em uma tabela materializada view ou de transmissão. Após a ativação, o recurso de tabela para vetores de exclusão não pode ser removido, mesmo que o senhor desative posteriormente os vetores de exclusão no site view ou na tabela.