Compartilhar via


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

O Delta Lake é um projeto de código aberto independente sob a governança da Linux Foundation. O Databricks apresenta suporte para novos recursos e otimizações do Delta Lake construídos sobre a base do 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 software de código aberto do Delta Lake para fins de compatibilidade.

Muitas otimizações do Azure Databricks requerem a habilitação de recursos do Delta Lake em uma tabela. Os recursos do Delta Lake são sempre compatíveis com versões anteriores, de modo que as tabelas gravadas por uma versão inferior do Databricks Runtime sempre podem ser lidas e gravadas por uma versão superior do Databricks Runtime. A habilitação de alguns recursos irá romper a compatibilidade futura com cargas de trabalho sendo executadas em uma versão inferior do Databricks Runtime. No caso de recursos que rompem a compatibilidade futura, você deve atualizar todas as cargas de trabalho que fazem referência às tabelas atualizadas para usar uma versão do Databricks Runtime em conformidade com a compatibilidade futura.

Observação

É possível remover deletionVectors, v2Checkpoint, columnMapping e typeWidening-preview no Azure Databricks. Consulte Remover os recursos da tabela 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 você quiser que o fluxo continue, precisará reiniciá-lo. Para obter métodos recomendados, confira Considerações de produção para Streaming Estruturado.

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

Os recursos do Delta Lake a seguir quebram a compatibilidade com versões futuras. Os recursos são habilitados caso a caso, em nível de tabela. Esta tabela lista a versão mais antiga do Databricks Runtime que ainda é compatível com o Azure Databricks.

Recurso Requer a versão do Databricks Runtime ou posterior Documentação
CHECK restrições Databricks Runtime 9.1 LTS Definir uma restrição CHECK no Azure Databricks
Feed de dados de alterações Databricks Runtime 9.1 LTS Usar o feed de dados de alterações do Delta Lake no Azure Databricks
Colunas geradas Databricks Runtime 9.1 LTS Colunas geradas pelo Delta Lake
Mapeamento de coluna Databricks Runtime 10.4 LTS Renomear e remover colunas usando o mapeamento de colunas do Delta Lake
Colunas de Identidade Databricks Runtime 10.4 LTS Usar colunas de identidade no Delta Lake
Recursos de tabela Databricks Runtime 12.2 LTS O que são recursos de tabela?
Vetores de exclusão Databricks Runtime 12.2 LTS O que são vetores de exclusão?
TimestampNTZ Databricks Runtime 13.3 LTS TIMESTAMP_NTZ type
UniForm Databricks Runtime 13.3 LTS Usar o UniForm para fazer a leitura de tabelas Delta com clientes Iceberg
Clustering líquido Databricks Runtime 13.3 LTS Usar clustering líquido para tabelas Delta
Acompanhamento de linhas Databricks Runtime 14.1 Usar o acompanhamento de linhas para tabelas Delta
Ampliação de tipo Databricks Runtime 15.2 Ampliação de tipo
Variante Databricks Runtime 15.3 Suporte ao tipo de dados Variant no Delta Lake

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

Observação

O Delta Live Tables e o SQL do Databricks atualizam automaticamente ambientes de runtime com versões regulares para dar suporte a novos recursos. Consulte Notas sobre a versão do Delta Live Tables e o processo de atualização de versão e Notas sobre a versão do SQL do Databricks.

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

Cada tabela Delta tem uma especificação de protocolo que indica o conjunto de recursos que a tabela dá suporte. A especificação do protocolo é usada por aplicativos que leem ou gravam na tabela para determinar se podem lidar com todos os recursos que a tabela suporta. Se um aplicativo não souber como lidar com um recurso listado como compatível no protocolo de uma tabela, esse aplicativo não poderá ler ou gravar nessa 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 do protocolo são irreversíveis, e a atualização da versão do protocolo pode quebrar os leitores, gravadores ou ambos existentes da tabela Delta Lake. O Databricks recomenda atualizar tabelas específicas somente quando necessário, como para aceitar novos recursos no Delta Lake. Você também deve verificar se todas as ferramentas de produção atuais e futuras dão suporte a tabelas do Delta Lake com a nova versão de protocolo.

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

Protocolo de leitura

O protocolo de leitura lista todos os recursos compatíveis com uma tabela e que um aplicativo deve entender para ler a tabela corretamente. A atualização do protocolo de leitura de uma tabela exige que todos os aplicativos leitores ofereçam suporte aos recursos adicionados.

Importante

Todos os aplicativos que gravam em uma tabela Delta devem ser capazes de construir um instantâneo da tabela. Dessa forma, as cargas de trabalho que gravam em tabelas Delta devem respeitar os requisitos do protocolo de leitura e gravação.

Caso se depare com um protocolo incompatível com uma carga de trabalho no Azure Databricks, você precisará atualizar para um Databricks Runtime superior que dê suporte a esse protocolo.

Protocolo de gravação

O protocolo de gravação lista todos os recursos compatíveis com uma tabela e os quais um aplicativo deve entender para gravar na tabela corretamente. A atualização do protocolo de gravação de uma tabela exige que todos os aplicativos gravadores ofereçam suporte aos recursos adicionados. Ele não afeta os 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.

Por exemplo, o suporte para restrições CHECK é um recurso do protocolo de gravação: somente os aplicativos de gravação precisam conhecer as restrições CHECK e aplicá-las.

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

Versões mínimas de leitor e gravador

Observação

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

Quando você habilita os recursos Delta em uma tabela, o protocolo da tabela é atualizado automaticamente. A Databricks não recomenda alterar as propriedades da tabela minReaderVersion e minWriterVersion. A alteração dessas propriedades da tabela não impede a atualização do protocolo. Definir esses valores para um valor inferior não faz o downgrade da tabela. Consulte Remover os recursos da tabela 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 que especificam quais recursos são suportados por uma determinada tabela. No Databricks Runtime 11.3 LTS e versões anteriores, os recursos do Delta Lake foram habilitados em pacotes chamados versões de protocolo. Os recursos de tabela são o sucessores das versões de protocolo e são projetados com o objetivo de oferecer maior flexibilidade para clientes que leem e gravam no Delta Lake. Confira O que é uma versão de protocolo?.

Observação

Os recursos de tabela têm requisitos de versão de protocolo. Confira Recursos por versão de protocolo.

Um recurso de tabela Delta é um marcador que indica que a tabela dá suporte a um recurso específico. Cada recurso é um recurso de protocolo de gravação (o que significa que ele atualiza apenas 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 com suporte no Delta Lake, consulte o Protocolo do Delta Lake.

Os recursos de 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 do Delta Lake usando requisitos mínimos do Databricks Runtime. 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 tenham suporte nessa versão.

Se você ler e gravar em tabelas Delta usando outros sistemas, talvez seja necessário considerar como os recursos de tabela afetam a compatibilidade, pois há um risco de o sistema não 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 gravador e para a versão 3 do leitor. O Azure Databricks fez a portabilidade do código para todas as versões do Databricks Runtime LTS com suporte para adicionar suporte aos recursos de tabela, mas apenas para os recursos já compatíveis com aquela versão do 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 têm suporte 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 abaixo, não é possível ativar 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 o protocolo de leitura e o protocolo de gravação. O log de transações de uma tabela Delta contém informações de controle de versão que dão suporte à evolução do Delta Lake. Confira Examinar os detalhes da tabela do Delta Lake com detalhes de descrição.

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

Observação

A partir da versão 7 do gravador e da versão 3 do leitor, o Delta Lake introduziu o conceito de recursos de tabela. Usando os recursos de tabela, você agora pode optar por habilitar apenas os recursos compatíveis com outros clientes em seu ecossistema de dados. Veja O que são recursos de tabela?.

Recursos por versão de protocolo

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

Observação

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

Recurso 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
Feed de dados de alterações 4 1 Usar o feed de dados de alterações do Delta Lake no Azure Databricks
Colunas geradas 4 1 Colunas geradas pelo Delta Lake
Mapeamento de coluna 5 2 Renomear e remover colunas usando o mapeamento de colunas do Delta Lake
Colunas de Identidade 6 2 Usar colunas de identidade no Delta Lake
Recursos de tabela de leitura 7 1 O que são recursos de tabela?
Recursos de tabela de gravação 7 3 O que são recursos de tabela?
Acompanhamento de linhas 7 1 Usar o acompanhamento de linhas para tabelas Delta
Vetores de exclusão 7 3 O que são vetores de exclusão?
TimestampNTZ 7 3 TIMESTAMP_NTZ type
Clustering líquido 7 3 Usar clustering líquido para tabelas Delta
UniForm 7 2 Usar o UniForm para fazer a leitura de tabelas Delta com clientes Iceberg
Ampliação de tipo 7 3 Ampliação de tipo
Variante 7 3 Suporte ao tipo de dados Variant no Delta Lake