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

Delta Lake é um projeto independente de código aberto sob a governança da Linux Foundation. O Databricks introduz suporte para novos recursos e otimizações do Delta Lake que se baseiam no Delta Lake nas versões do Databricks Runtime.

As otimizações do Azure Databricks que aproveitam os recursos do Delta Lake respeitam os protocolos usados no Delta Lake do OSS para compatibilidade.

Muitas otimizações do Azure Databricks requerem a ativação das funcionalidades do Delta Lake numa tabela. As funcionalidades do Delta Lake são sempre retro-compatíveis, pelo que as tabelas escritas por uma versão inferior do Databricks Runtime podem sempre ser lidas e escritas por uma versão superior do Databricks Runtime. Ativar algumas funcionalidades interrompe a compatibilidade futura com cargas de trabalho em execução numa versão inferior do Databricks Runtime. Para funcionalidades que interrompem a compatibilidade futura, tem de atualizar todas as cargas de trabalho que referenciam as tabelas atualizadas para utilizar uma versão compatível do Databricks Runtime.

Nota

Você pode soltar deletionVectors e v2Checkpoint no Azure Databricks. Consulte Recursos da tabela Drop Delta.

Importante

Todas as operações de alteração de protocolo 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 quiser que o fluxo continue, tem de reiniciá-lo. Para obter os métodos recomendados, consulte Considerações de produção para streaming estruturado.

Quais recursos do Delta Lake exigem atualizações do Databricks Runtime?

Os seguintes recursos Delta Lake apresentam compatibilidade de rutura. Os recursos são habilitados tabela a tabela. Esta tabela lista a versão mais baixa do Databricks Runtime ainda suportada pelo Azure Databricks.

Caraterística Requer a versão do Databricks Runtime ou posterior Documentação
CHECK Restrições Tempo de execução do Databricks 9.1 LTS Definir uma restrição CHECK no Azure Databricks
Alterar feed de dados Tempo de execução do Databricks 9.1 LTS Usar o feed de dados de alteração do Delta Lake no Azure Databricks
Colunas geradas Tempo de execução do Databricks 9.1 LTS Colunas geradas pelo Lago Delta
Mapeamento de colunas Tempo de execução do Databricks 10.4 LTS Renomear e soltar colunas com mapeamento de colunas Delta Lake
Colunas de identidade Tempo de execução do Databricks 10.4 LTS Usar colunas de identidade no Delta Lake
Funcionalidades de tabelas Databricks Runtime 12.1 (sem suporte) O que são recursos de tabela?
Vetores de exclusão Databricks Runtime 12.1 (sem suporte) O que são vectores de eliminação?
Carimbo de data/horaNTZ Databricks Runtime 13.0 (sem suporte) TIMESTAMP_NTZ tipo
UniForm Databricks Runtime 13.2 (sem suporte) Use UniForm para ler tabelas Delta com clientes Iceberg
Agrupamento de líquidos Databricks Tempo de execução 13.3 LTS Usar agrupamento líquido para tabelas Delta

Consulte Notas de versão, versões e compatibilidade do Databricks Runtime.

Nota

O Delta Live Tables e o Databricks SQL atualizam automaticamente os ambientes de tempo de execução com versões regulares para oferecer suporte a novos recursos. Consulte as notas de versão do Delta Live Tables e o processo de atualização da versão e as notas de versão do Databricks SQL.

O que é uma especificação de protocolo de tabela?

Cada tabela Delta tem uma especificação de protocolo que indica o conjunto de recursos suportados pela tabela. A especificação de protocolo é usada por aplicativos que leem ou gravam a tabela para determinar se eles podem lidar com todos os recursos suportados pela tabela. Se um aplicativo não souber como lidar com um recurso listado como suportado no protocolo de uma tabela, esse aplicativo não poderá ler ou gravar essa tabela.

A especificação do protocolo é separada em dois componentes: o protocolo de leitura e o protocolo de gravação.

Aviso

A maioria das atualizações de versão de protocolo são irreversíveis, e atualizar a versão de protocolo pode quebrar os leitores, gravadores ou ambos de tabela Delta Lake existentes. O Databricks recomenda que você atualize tabelas específicas somente quando necessário, como optar por novos recursos no Delta Lake. Você também deve verificar se todas as suas ferramentas de produção atuais e futuras suportam tabelas Delta Lake com a nova versão do protocolo.

Downgrades de protocolo estão disponíveis para alguns recursos. Consulte Recursos da tabela Drop Delta.

Ler protocolo

O protocolo de leitura lista todos os recursos que uma tabela suporta e que um aplicativo deve entender para ler a tabela corretamente. A atualização do protocolo de leitura de uma tabela requer que todos os aplicativos de leitura suportem os recursos adicionados.

Importante

Todos os aplicativos que gravam em uma tabela Delta devem ser capazes de construir um instantâneo da tabela. Como tal, as cargas de trabalho que gravam em tabelas Delta devem respeitar os requisitos de protocolo do leitor e do gravador.

Se você encontrar um protocolo sem suporte para uma carga de trabalho no Azure Databricks, deverá atualizar para um Databricks Runtime superior que ofereça suporte a esse protocolo.

Protocolo de escrita

O protocolo de gravação lista todos os recursos que uma tabela suporta e que um aplicativo deve entender para gravar na tabela corretamente. A atualização do protocolo de gravação de uma tabela requer que todos os aplicativos gravadores ofereçam suporte aos recursos adicionados. Ele não afeta aplicativos somente leitura, a menos que o protocolo de leitura também seja atualizado.

Quais protocolos devem ser atualizados?

Alguns recursos exigem a atualização do protocolo de leitura e do protocolo de gravação. Outros recursos exigem apenas a atualização do protocolo de gravação.

Como exemplo, o suporte para CHECK restrições é um recurso de protocolo de gravação: apenas aplicativos de gravação precisam saber sobre CHECK restrições e impô-las.

Por outro lado, o mapeamento de colunas requer a atualização dos protocolos de leitura e gravação. Como os dados são armazenados de forma diferente na tabela, os aplicativos de leitura devem entender o mapeamento de colunas para que possam ler os dados corretamente.

Versões mínimas de leitor e gravador

Nota

Você deve atualizar explicitamente a versão do protocolo de tabela ao habilitar o mapeamento de coluna.

Quando você habilita os recursos Delta em uma tabela, o protocolo de tabela é atualizado automaticamente. Databricks recomenda não alterar as propriedades e minWriterVersion tabelaminReaderVersion. A alteração dessas propriedades da tabela não impede a atualização do protocolo. Definir esses valores para um valor mais baixo não faz downgrade da tabela. Consulte Recursos da tabela Drop Delta.

O que são recursos de tabela?

No Databricks Runtime 12.2 LTS e superior, os recursos da tabela Delta Lake introduzem sinalizadores granulares especificando quais recursos são suportados por uma determinada tabela. No Databricks Runtime 11.3 LTS e inferior, os recursos do Delta Lake foram habilitados em pacotes chamados versões de protocolo. Os recursos de tabela são os sucessores das versões de protocolo e são projetados com o objetivo de melhorar a flexibilidade para clientes que leem e escrevem Delta Lake. Consulte O que é uma versão do protocolo?.

Nota

Os recursos da tabela têm requisitos de versão do protocolo. Consulte Recursos por versão do protocolo.

Um recurso de tabela delta é um marcador que indica que a tabela oferece suporte a um recurso específico. Cada recurso é um recurso de protocolo de gravação (o que significa que ele apenas atualiza o protocolo de gravação) ou um recurso de protocolo de leitura/gravação (o que significa que os protocolos de leitura e gravação são atualizados para habilitar o recurso).

Para saber mais sobre os recursos de tabela suportados no Delta Lake, consulte o protocolo Delta Lake.

Os recursos da tabela alteram a forma como os recursos do Delta Lake são habilitados?

Se você interagir apenas com tabelas Delta por meio do Azure Databricks, poderá continuar a acompanhar o suporte para recursos Delta Lake usando os requisitos mínimos de tempo de execução do Databricks. O Azure Databricks dá suporte à leitura de tabelas Delta que foram atualizadas para recursos de tabela em todas as versões do Databricks Runtime LTS, desde que todos os recursos usados pela tabela sejam suportados por essa versão.

Se você ler e escrever a partir de tabelas Delta usando outros sistemas, talvez seja necessário considerar como os recursos da tabela afetam a compatibilidade, porque há um risco de que o sistema não possa entender as versões de protocolo atualizadas.

Importante

Os recursos de tabela são introduzidos no formato Delta Lake para a versão 7 do escritor e a versão 3 do leitor. O Azure Databricks retroportou o código para todas as versões suportadas do Databricks Runtime LTS para adicionar suporte para recursos de tabela, mas apenas para os recursos já suportados nesse Databricks Runtime. Isso significa que, embora você possa optar por usar recursos de tabela para habilitar colunas geradas e ainda trabalhar com essas tabelas no Databricks Runtime 9.1 LTS, as tabelas com colunas de identidade habilitadas (o que requer o Databricks Runtime 10.4 LTS) ainda não são suportadas nesse Databricks Runtime.

O que é uma versão de protocolo?

Uma versão de protocolo é um número de protocolo que indica um agrupamento específico de recursos de tabela. No Databricks Runtime 11.3 LTS e inferior, não é possível ativar os recursos de tabela individualmente. As versões de protocolo agrupam um grupo de recursos.

As tabelas delta especificam uma versão de protocolo separada para protocolo de leitura e gravação. O log de transações para uma tabela Delta contém informações de controle de versão de protocolo que suportam a evolução do Delta Lake. Consulte Analisar detalhes da tabela Delta Lake com detalhes de descrição.

As versões de protocolo agrupam todos os recursos dos protocolos anteriores. Consulte Recursos por versão do protocolo.

Nota

Começando com a versão 7 do escritor e a versão 3 do leitor, o Delta Lake introduziu o conceito de recursos de tabela. Usando recursos de tabela, agora você pode optar por habilitar apenas os recursos que são suportados por outros clientes em seu ecossistema de dados. Consulte O que são recursos de tabela?.

Características por versão do protocolo

A tabela a seguir mostra as versões mínimas de protocolo necessárias para os recursos do Delta Lake.

Nota

Se você estiver preocupado apenas com a compatibilidade do Databricks Runtime, consulte Quais recursos do Delta Lake exigem atualizações do Databricks Runtime?. O Delta Sharing suporta apenas tabelas de leitura com recursos que exigem minReaderVersion = 1o .

Caraterística minWriterVersion minReaderVersion Documentação
Funcionalidade básica 2 1 O que é o Delta Lake?
CHECK Restrições 3 1 Definir uma restrição CHECK no Azure Databricks
Alterar feed de dados 4 1 Usar o feed de dados de alteração do Delta Lake no Azure Databricks
Colunas geradas 4 1 Colunas geradas pelo Lago Delta
Mapeamento de colunas 5 2 Renomear e soltar colunas com mapeamento de colunas Delta Lake
Colunas de identidade 6 2 Usar colunas de identidade no Delta Lake
Recursos da tabela lidos 7 1 O que são recursos de tabela?
Gravação de recursos de tabela 7 3 O que são recursos de tabela?
Vetores de exclusão 7 3 O que são vectores de eliminação?
Carimbo de data/horaNTZ 7 3 TIMESTAMP_NTZ tipo
Agrupamento de líquidos 7 3 Usar agrupamento líquido para tabelas Delta
UniForm 7 2 Use UniForm para ler tabelas Delta com clientes Iceberg