Compatibilidade de recursos e protocolos do Delta Lake

Os protocolos de tabela delta lake especificam quais recursos um cliente deve dar suporte para ler ou gravar uma tabela. Esta página aborda versões de protocolo, recursos de tabela, requisitos de compatibilidade e como Azure Databricks gerencia atualizações de protocolo. Consulte também Examinar detalhes da tabela com detalhes de descrição.

Protocolo de tabela e compatibilidade

Cada tabela delta lake tem uma especificação de protocolo que indica o conjunto de recursos necessários para ler e gravar na tabela. Os aplicativos usam a especificação de protocolo para determinar se podem dar suporte a todos os recursos que a tabela usa. Se um aplicativo não puder dar suporte a um recurso no protocolo atual de uma tabela, esse aplicativo não poderá ler ou gravar essa tabela.

A maioria dos novos recursos do Delta Lake exige que você atualize o protocolo de tabela.

A tabela a seguir lista os principais termos que descrevem os protocolos delta lake:

Prazo Description
Cliente Delta Lake Qualquer sistema que lê ou grava em uma tabela delta lake.
Leia o protocolo Especifica o suporte necessário para um cliente delta lake ler uma tabela.
Protocolo de gravação Especifica o suporte necessário para que um cliente do Delta Lake grave em uma tabela.
minReaderVersion Valor inteiro do protocolo de leitor. Os valores válidos são 1, 2 ou 3.
minWriterVersion Valor inteiro do protocolo de gravador. Valores válidos são inteiros 2 por meio 7de .
O recurso tabela Uma alternativa refinada às versões de protocolo usadas quando minReaderVersion = 3 e minWriterVersion = 7. Os recursos de tabela são mapeados para recursos do Delta Lake habilitados opcionalmente.
Recurso de Escrita Um recurso de tabela que requer suporte ao cliente de gravação, mas não bloqueia o acesso somente leitura.
Recurso leitor Um recurso de tabela que requer suporte ao cliente de leitura e gravação. Consulte versões do Protocolo e recursos de tabela.

Os protocolos de gravação e os recursos de gravador afetam apenas a compatibilidade com clientes gravadores, permitindo o acesso somente leitura à tabela a partir de cargas de trabalho herdadas.

Nem todos os recursos do Delta Lake são compatíveis uns com os outros.

Alguns recursos de tabela não podem ser descartados depois de habilitados. Confira Remover um recurso de tabela do Delta Lake e fazer downgrade do protocolo de tabela.

Versões de protocolo e recursos de tabela

Todas as tabelas delta lake incluem uma versão de protocolo baseada em inteiro representada por minReaderVersion e minWriterVersion. Cada versão agrupa vários recursos e os recursos são cumulativos entre versões. Para cumprir o protocolo Delta Lake, os clientes devem implementar o suporte para todos os recursos em uma determinada versão, incluindo todos os recursos lançados anteriormente.

No Databricks Runtime 12.2 LTS e posteriores, os recursos de tabela substituem o protocolo baseado em inteiro por sinalizadores granulares que indicam quais recursos uma tabela usa. Isso permite verificações de compatibilidade mais refinadas entre clientes e tabelas.

Os recursos do gravador de tabela afetam a forma como os dados são gravados. Eles exigem minWriterVersion=7 , mas não bloqueiam clientes leitores.

Os recursos do leitor de tabela afetam a forma como os dados são lidos. Todos os recursos de leitor também são recursos de gravador e exigem minReaderVersion=3 e minWriterVersion=7. Um cliente não pode gravar em uma tabela que não pode ler.

Quando os recursos da tabela estão habilitados, eles aparecem no protocolo como readerFeatures ou writerFeatures. O Delta Lake resolve o protocolo de tabela para a versão mais baixa que dá suporte a todos os recursos habilitados. Veja o protocolo mais baixo possível.

Note

Azure Databricks inclui suporte parcial sem interrupções para recursos de tabela em todas as versões do Databricks Runtime com suporte. Os clientes delta lake do OSS escolhem como implementar o suporte para determinados recursos.

Alterações de protocolo

O protocolo de uma tabela é alterado nas seguintes condições:

  • Se um novo recurso estiver habilitado, o protocolo será atualizado.
  • Se um recurso de tabela for descartado, o protocolo será rebaixado.

Desativar um recurso de tabela não resulta em um downgrade de protocolo. Você deve remover o recurso para removê-lo totalmente do protocolo. Nem todos os recursos de tabela podem ser descartados. Confira Remover um recurso de tabela do Delta Lake e fazer downgrade do protocolo de tabela.

Todas as operações de alteração de protocolo entram em conflito com gravações simultâneas. As leituras de streaming falham quando encontram uma confirmação que altera os metadados da tabela. Para continuar, reinicie os fluxos afetados. Para obter métodos recomendados, confira Considerações de produção para Streaming Estruturado.

Note

O Databricks recomenda que você nunca altere diretamente as propriedades e minWriterVersion a minReaderVersion tabela. Alterar essas propriedades não impede atualizações de protocolo e defini-las para um valor mais baixo não faz downgrade da tabela. Confira Remover um recurso de tabela do Delta Lake e fazer downgrade do protocolo de tabela.

O que dispara uma atualização de protocolo

Quando você habilita um recurso, o protocolo de tabela é atualizado automaticamente.

As atualizações de protocolo são disparadas das seguintes maneiras:

  • Habilite automaticamente com base na sintaxe usada em instruções ou ALTER instruçõesCREATE. Por exemplo, CLUSTER BY em uma CREATE TABLE instrução habilita automaticamente o clustering líquido e GENERATED ALWAYS AS habilita colunas geradas.
  • Habilite explicitamente por meio das propriedades da tabela. Por exemplo, a configuração 'delta.enableDeletionVectors' = true permite vetores de exclusão.
  • Habilitar um recurso pode habilitar automaticamente os recursos necessários. Por exemplo, habilitar o UniForm automaticamente habilita o mapeamento de colunas e habilitar o clustering líquido automaticamente habilita o ponto de verificação V2. Examine a documentação de Azure Databricks relevante para determinar quais recursos de tabela um determinado recurso requer.

Os recursos de leitor atualizam os protocolos de leitura e gravação. Por exemplo, o mapeamento de coluna é um recurso de leitor e requer a atualização de ambos os protocolos porque os dados são armazenados de forma diferente no armazenamento.

Recursos de gravador, como CHECK restrições, atualizam apenas o protocolo de gravação.

Warning

A maioria das atualizações de versão de protocolo é irreversível e pode interromper leitores de tabela, gravadores ou ambos existentes do Delta Lake. Atualize tabelas específicas somente quando necessário e verifique se todas as ferramentas de produção atuais e futuras dão suporte à nova versão do protocolo.

Downgrades de protocolo estão disponíveis para alguns recursos. Confira Remover um recurso de tabela do Delta Lake e fazer downgrade do protocolo de tabela.

Protocolo mais baixo possível

O Delta Lake resolve o protocolo de tabela para a versão mais baixa que dá suporte a todos os recursos habilitados. Isso só pode diminuir minReaderVersion ou minWriterVersionnunca criá-los. Os recursos de tabela nunca são removidos automaticamente. Use DROP FEATURE para remover um recurso de tabela do protocolo.

Se todos os recursos habilitados tiverem suporte total em uma versão de protocolo com base em inteiros inferiores, a tabela poderá reverter para essa versão e remover readerFeatures ou writerFeatures a partir do protocolo. Isso não desabilitará nenhum recurso. Versões de protocolo mais baixas aumentam a compatibilidade porque todos os clientes devem respeitá-las.

Compatibilidade do Azure Databricks e do Databricks Runtime

Azure Databricks apresenta suporte para novos recursos do Delta Lake em versões do Databricks Runtime:

  • As tabelas escritas por uma versão inferior do Databricks Runtime têm suporte completo de leitura e gravação em versões mais altas do Databricks Runtime.
  • Tabelas escritas por uma versão mais alta do Databricks Runtime podem usar recursos de tabela sem suporte em versões inferiores do Databricks Runtime.
  • Alguns recursos permitem gravações de versões inferiores do Databricks Runtime sem aplicar totalmente todas as otimizações para o recurso habilitado.

Se você usar apenas tabelas delta lake por meio de Azure Databricks, você só precisará acompanhar o suporte a recursos usando requisitos mínimos do Databricks Runtime. Se você ler ou gravar tabelas de sistemas externos, deverá verificar se esses clientes dão suporte aos recursos de tabela habilitados em suas tabelas.

Suporte a recursos de tabela com backported

No Databricks Runtime 12.2 LTS e posteriores, os recursos de tabela substituíram o protocolo baseado em inteiro por sinalizadores granulares que indicam quais recursos uma tabela usa.

Azure Databricks tem suporte de recurso de tabela com backported para Databricks Runtime 11.3 LTS e inferior, em vez de dar suporte apenas a versões de protocolo inteiro, mas apenas para recursos já compatíveis com essa versão.

Por exemplo, você pode ler e gravar em uma tabela com colunas geradas habilitadas usando recursos de tabela no Databricks Runtime 9.1 LTS. No entanto, você não pode usar o Databricks Runtime 9.1 LTS para ler e gravar em uma tabela com colunas de identidade habilitadas usando recursos de tabela porque as colunas de identidade exigem Databricks Runtime 10.4 LTS e superior.

Ao usar recursos de tabela com suporte de backported, algumas operações disponíveis em uma determinada versão do Databricks Runtime podem não estar disponíveis na versão do Delta Lake do OSS correspondente. Se sua arquitetura incluir clientes delta lake do OSS, teste a compatibilidade antes de habilitar recursos de tabela em tabelas de produção.

Recursos do Delta Lake e versões necessárias do Databricks Runtime

A tabela a seguir lista a versão mais baixa do Databricks Runtime com suporte total para cada recurso, de modo que todos os recursos disponíveis para leituras e gravações sejam compatíveis.

Característica Requer a versão do Databricks Runtime ou posterior Documentation
CHECK restrições Todas as versões com suporte do Databricks Runtime CHECK Restrição
Alterar feed de dados Todas as versões com suporte do Databricks Runtime Usar o feed de dados de alterações no Azure Databricks
Colunas geradas Todas as versões com suporte do Databricks Runtime Colunas geradas pelo Delta Lake
Mapeamento de colunas Todas as versões com suporte do Databricks Runtime Renomear e remover colunas usando o mapeamento de colunas do Delta Lake
Colunas de Identidade Todas as versões com suporte do Databricks Runtime Colunas de identidade
Recursos de tabela Todas as versões com suporte do Databricks Runtime Versões de protocolo e recursos de tabela
Vetores de deleção Todas as versões com suporte do Databricks Runtime Vetores de exclusão no Databricks
TimestampNTZ Databricks Runtime 13.3 LTS TIMESTAMP_NTZ tipo
Uniforme Databricks Runtime 13.3 LTS Ler tabelas delta lake com clientes Iceberg usando UniForm
Agrupamento de líquidos Databricks Runtime 13.3 LTS Usar agrupamento líquido para tabelas
Acompanhamento de filas Azure Databricks Runtime 14.3 LTS Acompanhamento de linha no Azure Databricks
Ampliação de tipo Databricks Runtime 15.4 LTS Ampliação de tipo
Variant Databricks Runtime 15.4 LTS Suporte de tipo variant para Apache Iceberg e Delta Lake
Collations Databricks Runtime 16.1 Suporte à ordenação para Delta Lake
Pontos de verificação protegidos Databricks Runtime 16.3 Remover um recurso da tabela Delta Lake e rebaixar o protocolo da tabela
Confirmações de catálogo Databricks Runtime 16.4 LTS Confirmações de catálogo

Veja Versões e compatibilidade das notas de versão do Databricks Runtime.

Note

O Lakeflow Spark Declarative Pipelines e o Databricks SQL atualizam automaticamente ambientes de runtime com versões regulares para dar suporte a novos recursos. Confira as notas de versão do Lakeflow Spark Declarative Pipelines e o processo de atualização de versão e notas de versão do Databricks SQL.

Funcionalidades por versão de protocolo

Note

Para compatibilidade do Databricks Runtime, consulte Azure Databricks e compatibilidade do Databricks Runtime.

O Delta Lake usa valores separados de minReaderVersion e minWriterVersion para especificar capacidades de protocolo. O protocolo Delta Lake de código aberto foi padronizado em funcionalidades de tabela, mas alguns clientes ainda usam a versão de protocolo legado. Como alguns clientes podem não dar suporte a todos os recursos, o Databricks recomenda que você verifique com a documentação do cliente e teste a compatibilidade antes de habilitar novos recursos em tabelas de produção.

O Apache Iceberg usa um único format-version em vez de versões de leitor e gravador separados. Uma versão de formato Iceberg indica quais recursos estão disponíveis, mas não exige seu uso. Os recursos são ativados opcionalmente, exceto pelo rastreamento de linhas, que é obrigatório na versão de formato 3. Quando um recurso mostra N/A na coluna Iceberg, é um recurso específico do Delta sem um equivalente de Iceberg direto.

A tabela a seguir lista os requisitos de versão do protocolo para os recursos da tabela Delta Lake e Apache Iceberg. O tipo de recurso indica se um recurso deve ser respeitado apenas para gravações ou para leituras e gravações.

Característica Delta minWriterVersion Delta minReaderVersion Iceberg format-version Tipo de funcionalidade
Funcionalidade básica 2 1 1 Escritor
CHECK Restrições 3 1 N/A Escritor
Alterar feed de dados 4 1 N/A Escritor
Colunas geradas 4 1 N/A Escritor
Mapeamento de coluna 5 2 N/A Leitor e gravador
Colunas de identidade 6 1 N/A Escritor
Acompanhamento de linhas 7 1 3 Escritor
Vetores de deleção 7 3 3 Leitor e gravador
TimestampNTZ 7 3 1 Leitor e gravador
Agrupamento líquido 7 3 1 Leitor e gravador (1)
Leitores de iceberg (UniForm) 7 2 N/A Gravador (2)
Ampliação de tipo 7 3 N/A Leitor e gravador
Variante 7 3 3 Leitor e gravador
Fragmentação de variante 7 3 3 Leitor e gravador
Colações 7 3 N/A Leitor e gravador
Pontos de verificação protegidos 7 1 N/A Escritor
Confirmações de catálogo 7 3 N/A Leitor e gravador

(1): o clustering líquido implementa o particionamento oculto.

(2): requer que o mapeamento de coluna seja habilitado.