Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Vetores de eliminação aceleram as operações DELETE, UPDATE e MERGE em tabelas Delta Lake e Apache Iceberg. Sem vetores de eliminação, modificar uma única linha requer reescrever todo o ficheiro Parquet que contém esse registo. Os vetores de eliminação assinalam as linhas como modificadas nos metadados, em vez disso, e as leituras aplicam as entradas do vetor de eliminação durante a consulta para determinar o estado atual da tabela.
Note
Para atualizações preditivas de E/S, o Photon utiliza vetores de eliminação para acelerar as operações DELETE, MERGE e UPDATE. Consulte Usar E/S preditiva para acelerar as atualizações.
Prerequisites
Todas as tabelas Apache Iceberg v3 incluem vetores de eliminação por defeito. Consulte Usar recursos do Apache Iceberg v3. Para tabelas Delta Lake, deve ativar explicitamente os vetores de eliminação.
Para escrever tabelas com vetores de eliminação com todas as otimizações, use o Databricks Runtime 14.3 LTS ou superior. Para os ler, use o Databricks Runtime 12.2 LTS ou superior.
No Databricks Runtime 14.2 e posterior, tabelas com vetores de exclusão suportam concorrência em nível de linha. Ver Concorrência a nível de linha.
Compatibilidade com clientes
O Azure Databricks usa vetores de eliminação para otimizar a E/S preditiva nas atualizações feitas na computação com Photon. Consulte Usar E/S preditiva para acelerar as atualizações.
O suporte para o uso de vetores de exclusão para leituras e gravações varia de acordo com o cliente.
A tabela seguinte lista as versões dos clientes necessárias para ler e escrever tabelas vetoriais de eliminação:
| Client | Vetores de eliminação de escrita | Ler vetores de exclusão |
|---|---|---|
| Tempo de execução do Databricks com Photon | Suporta MERGE, UPDATEe DELETE usando Databricks Runtime 12.2 LTS e superior. |
Requer Databricks Runtime 12.2 LTS ou superior. |
| Tempo de execução do Databricks sem fóton | Suporta DELETE o uso do Databricks Runtime 12.2 LTS e superior. Suporta UPDATE o uso do Databricks Runtime 14.1 e superior. Suporta MERGE com Databricks Runtime 14.3 LTS e versões superiores. |
Requer Databricks Runtime 12.2 LTS ou superior. |
| OSS Apache Spark com OSS Delta Lake | Suporta DELETE o uso de OSS Delta 2.4.0 e superior. Suporta o uso de UPDATE com o OSS Delta 3.0.0 e versões superiores. |
Requer OSS Delta 2.3.0 ou superior. |
| Destinatários do OpenSharing | As operações de escrita não são suportadas nas tabelas OpenSharing. | O Azure Databricks requer Databricks Runtime 14.1 ou superior. O Apache Spark de código aberto exige delta-sharing-spark 3.1 ou superior. |
Para apoio com outros clientes, consulte a documentação de integrações OSS Delta Lake.
Habilitar vetores de exclusão
Nas definições do workspace podes ativar vetores de eliminação em novas tabelas quando usas um SQL warehouse ou Databricks Runtime 14.3 LTS ou superior. As definições padrão variam consoante a região; consulte Vetores de eliminação com ativação automática.
Os vetores de exclusão não são habilitados por padrão para exibições materializadas e tabelas de streaming armazenadas no metastore do Hive.
Para ativar ou remover manualmente vetores de eliminação em qualquer tabela ou visualização, use a enableDeletionVectors propriedade de tabela.
Para ativar vetores de eliminação numa tabela quando cria ou altera uma tabela:
Lago Delta
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
Tabela de iceberg
CREATE TABLE <table-name> [options] TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);
Não podes usar uma ALTER instrução para ativar ou remover vetores de eliminação numa vista materializada ou numa tabela de streaming. Tens de usar uma CREATE TABLE declaração.
Warning
Quando ativas vetores de eliminação, o Databricks atualiza o protocolo da tabela. Depois de atualizar, os clientes sem suporte a vetor de eliminação não conseguem ler a tabela. Consulte Compatibilidade de recursos e protocolos do Delta Lake.
No Databricks Runtime 14.1 e superiores, pode remover a funcionalidade da tabela de vetores de eliminação para permitir a compatibilidade com outros clientes. Consulte Remover uma funcionalidade da tabela Delta Lake e fazer downgrade do protocolo da tabela.
Aplicar eliminações suaves a ficheiros de dados
Vetores de eliminação marcam alterações nas linhas como eliminações suaves que modificam logicamente ficheiros de dados Parquet existentes na tabela. Para reescrever fisicamente os ficheiros de dados do Parquet, faça uma das seguintes ações:
- Execute
OPTIMIZEna tabela. - Execute
REORG TABLE ... APPLY (PURGE)na tabela. Este comando reescreve todos os ficheiros de dados contendo registos com alterações no vetor de eliminação. Consulte REORG TABLE. - Execute uma escrita com auto-compactação, que desencadeia a reescrita de um ficheiro de dados com um vetor de eliminação.
Os eventos de compactação de ficheiros não têm garantias estritas para resolver alterações registadas em vetores de eliminação. Algumas alterações registadas nos vetores de eliminação podem não ser fisicamente aplicadas se os ficheiros de dados alvo não forem candidatos à compactação de ficheiros.
Eliminar fisicamente dados antigos
Os dados modificados podem ainda existir nos ficheiros antigos de uma tabela após uma operação de purga. Pode querer remover fisicamente os dados, por exemplo, para reduzir custos de armazenamento com o seu fornecedor de cloud ou para cumprir os pedidos do RGPD.
Para eliminar fisicamente dados antigos:
- Executar
REORG TABLE ... APPLY (PURGE) - Execute
VACUUMcom o limiar de retenção definido para a marca temporal de conclusão da purga, para remover fisicamente ficheiros de versões anteriores da tabela. Consulte Purgar apenas exclusões de metadados para forçar a reescrita de dados.
Melhorar o desempenho para tabelas grandes
Para melhorar o desempenho das purgas em tabelas grandes, defina spark.databricks.delta.reorg.purgeMode para rows.
Por exemplo, defina esta configuração ao purgar dados manualmente com REORG TABLE ... APPLY (PURGE) ou ao remover vetores de eliminação com ALTER TABLE DROP FEATURE deletionVectors.
Por padrão, spark.databricks.delta.reorg.purgeMode é definido como all. Em tabelas grandes, esta operação pode ser lenta porque as operações de purga têm de analisar todos os rodapés de ficheiro Parquet para verificar tanto dados de colunas caídos como linhas apagadas de forma suave.
O rows valor limita a operação a tratar apenas ficheiros com linhas apagadas suavemente. Em tabelas grandes, isto pode melhorar o desempenho se muitos ficheiros não conterem linhas apagadas suavemente e a tabela não tiver colunas eliminadas.
Limitações
- As leituras Iceberg v2 não suportam vetores de eliminação. O Apache Iceberg v3 suporta vetores de eliminação em tabelas com as leituras Iceberg ativadas. Consulte Usar recursos do Apache Iceberg v3.
- Não é possível 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ção REORG TABLE ... APPLY (PURGE) e, em seguida, execute a instrução
GENERATE. Deve verificar se não estão a ser executadas operações de escrita concorrentes quando submeter a instruçãoREORG.- Não é possível gerar incrementalmente ficheiros de manifesto para uma tabela com vetores de eliminação ativados (por exemplo, definindo a propriedade
delta.compatibility.symlinkFormatManifest.enabled=true).
- Não é possível gerar incrementalmente ficheiros de manifesto para uma tabela com vetores de eliminação ativados (por exemplo, definindo a propriedade
- Se ativar vetores de eliminação numa vista materializada ou numa tabela Streaming e posteriormente remover esses vetores de eliminação, estes não se aplicam a futuras escritas na vista ou tabela, mas os vetores de eliminação existentes permanecem.
- Não pode fazer downgrade do protocolo de tabela depois de ativar vetores de eliminação numa vista materializada ou numa tabela Streaming, mesmo que posteriormente desligue os vetores de eliminação.