Remover os recursos da tabela Delta

Importante

O suporte para remover os recursos da tabela Delta e das versões de protocolo de downgrade se encontra na Visualização Pública no Databricks Runtime 14.1 e superior.

O Azure Databricks fornece suporte limitado para descartar os recursos de tabela. Para remover um recurso de tabela, deve-se fazer o seguinte:

  • Desative as propriedades da tabela que usam o recurso de tabela.
  • Remova todos os rastreamentos do recurso de tabela dos arquivos de dados que fazem backup da tabela.
  • Remova as entradas de transação que usam o recurso de tabela do log de transações.
  • Faça downgrade do protocolo da tabela.

Quando houver suporte, você só deve usar essa funcionalidade para oferecer suporte à compatibilidade com as versões anteriores do Databricks Runtime, Compartilhamento Delta ou outros clientes de leitor, ou do gravador Delta Lake.

Importante

Todas as operações DROP FEATURE entram em conflito com todas as gravações simultâneas.

As leituras de streaming falham quando encontram uma confirmação que altera os metadados da tabela. Se você quiser que o fluxo continue, precisará reiniciá-lo. Para obter métodos recomendados, confira Considerações de produção para Streaming Estruturado.

Como posso descartar um recurso de tabela Delta?

Para remover um recurso de tabela Delta, execute um comando ALTER TABLE <table-name> DROP FEATURE <feature-name> [TRUNCATE HISTORY]. Confira ALTER TABLE.

Você deve usar o Databricks Runtime 14.1 ou superior e ter privilégios MODIFY na tabela Delta de destino.

Quais recursos da tabela Delta podem ser removidos?

Você pode remover os seguintes recursos da tabela Delta:

Você não pode remover outros Recursos da tabela Delta.

Habilitar recursos de tabela para remover recursos herdados

O comando DROP FEATURE exige versões de protocolo que dão suporte a leituras e gravações de recursos de tabela. Havia suporte para recursos Delta como columnMapping e checkConstraints em versões de protocolo anteriores. Dependendo de outros recursos habilitados na tabela, talvez seja necessário atualizar as versões do protocolo antes de remover esses recursos.

É possível usar o seguinte comando para atualizar as versões do leitor e do gravador de tabela, o que permite eliminar o mapeamento de coluna e fazer downgrade do protocolo:

ALTER TABLE <table-name> SET TBLPROPERTIES (
  'delta.minReaderVersion' = '3',
  'delta.minWriterVersion' = '7'
)

Como os recursos da tabela Delta são removidos?

Como os recursos da tabela Delta representam protocolos de leitor e gravador, eles devem estar completamente ausentes do log de transações para remoção completa. A remoção de um recurso ocorre em dois estágios e requer tempo para transcorrer antes da conclusão. As especificidades da remoção de recursos variam de acordo com o recurso, mas a seção a seguir fornece uma visão geral.

Preparar-se para remover um recurso de tabela

Durante o primeiro estágio, o usuário se prepara para remover o recurso de tabela. O seguinte descreve o que acontece durante este estágio:

  1. O usuário executa o comando DROP FEATURE.
  2. As propriedades de tabela que habilitam especificamente um recurso de tabela têm valores definidos para desabilitar o recurso.
  3. As propriedades da tabela que controlam os comportamentos associados ao recurso removido têm opções definidas como valores padrão antes da introdução do recurso.
  4. Conforme for necessário, os arquivos de dados e metadados são reescritos respeitando as propriedades da tabela atualizada.
  5. O comando termina de ser executado e retorna uma mensagem de erro informando ao usuário que ele deve aguardar 24 horas para prosseguir com a remoção do recurso.

Depois de desabilitar um recurso pela primeira vez, você pode continuar gravando na tabela de destino antes de concluir o downgrade do protocolo, mas não pode usar o recurso de tabela que está removendo.

Observação

Se você deixar a tabela nesse estado, as operações na tabela não usarão o recurso de tabela, mas o protocolo ainda oferece suporte ao recurso de tabela. Até que você conclua a etapa final de downgrade, a tabela não poderá ser lida pelos clientes Delta que não entendem o recurso de tabela.

Fazer o downgrade do protocolo e remover um recurso de tabela

Para remover o recurso de tabela, você deve remover todo o histórico de transações associado ao recurso e fazer downgrade do protocolo.

  1. Depois de pelo menos 24 horas, o usuário executa o comando DROP FEATURE novamente com a cláusula TRUNCATE HISTORY.
  2. O cliente confirma que nenhuma transação no limite de retenção especificado usa o recurso de tabela e trunca o histórico da tabela nesse limite.
  3. O protocolo é rebaixado, removendo o recurso de tabela.
  4. Se os recursos de tabela presentes na tabela puderem ser representados por uma versão de protocolo herdada, o minReaderVersion e minWriterVersion da tabela serão removidos da versão mais baixa que oferece suporte a exatamente todos os recursos restantes em uso pela tabela Delta.

Importante

A execução ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY remove todos os dados do log das transações com mais de 24 horas. Depois de remover um recurso de tabela Delta, você não tem acesso ao histórico da tabela ou à viagem no tempo.

Confira Como o Azure Databricks gerencia a compatibilidade de recursos do Delta Lake?