Delta Lake compatibilidade de recurso e protocolos
Este artigo fornece uma visão geral dos protocolos Delta Lake, recurso de tabela e compatibilidade com clientes Delta Lake para leituras e gravações.
A transação log para uma tabela Delta contém informações sobre a versão do protocolo. Veja os detalhes da tabela Review Delta Lake com detalhes descritivos.
Como o protocolo de tabela especifica a compatibilidade de leitura e gravação?
Toda tabela Delta tem uma especificação de protocolo que indica o conjunto de recursos necessários para ler e gravar na tabela. A especificação do protocolo é usada pelos aplicativos que leem ou gravam na tabela para determinar se eles 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 essa tabela.
A maioria dos novos recursos e funcionalidades adicionados ao Delta Lake exige a atualização do protocolo da tabela.
A tabela a seguir apresenta uma visão geral dos termos de key usados para descrever os protocolos de Delta Lake:
Prazo | Descrição |
---|---|
Cliente Delta Lake | Qualquer sistema que leia ou grave em uma tabela Delta. |
Protocolo de leitura | Especifica o suporte necessário para que um cliente Delta Lake leia uma tabela. |
Protocolo de gravação | Especifica o suporte necessário para que um cliente Delta Lake grave em uma tabela. |
| Componente do protocolo do leitor. Os valores válidos são |
| Componente do protocolo do gravador. Os valores válidos são números inteiros de 2 a 7. |
Recurso de tabela | Uma alternativa refinada às versões de protocolo. Mapa de recurso de tabela para Delta Lake recurso habilitado opcionalmente. |
Recurso do redator | Um recurso de tabela vinculado a um protocolo de gravação. |
Recurso do leitor | Um recurso de tabela vinculado a um protocolo de leitura. |
Os protocolos de gravação e o recurso de gravação afetam apenas a compatibilidade com os clientes de gravação, o que significa que o acesso somente leitura à tabela a partir de cargas de trabalho legadas ainda é compatível. Os protocolos de leitura e os recursos do leitor afetam a compatibilidade de leitura e gravação.
Nem todos os Delta Lake recursos são compatíveis entre si.
Alguns recursos de tabela não podem ser descartados depois de ativados. Consulte Drop a Delta Lake table recurso e downgrade table protocol.
Recurso de tabela para compatibilidade de protocolo
Em Databricks Runtime 12.2 LTS e acima, Databricks usa a tabela recurso para indicar suporte a recurso e compatibilidade com leitores e escritores. Os recursos de tabela usam sinalizadores granulares para especificar quais recursos são compatíveis com uma determinada tabela. O recurso de tabela substitui o esquema de controle de versão do protocolo legado, introduzindo um novo recurso no protocolo Delta Lake.
Os recursos do Table Writer indicam os recursos que afetam a forma como os dados são gravados. O recurso de escritor de tabela requer minWriterVersion
== 7. O recurso implementado como recurso de escritor não bloqueia os clientes leitores.
Os recursos do leitor de tabelas indicam os recursos que afetam a forma como os dados são lidos. Todos os recursos de leitor de tabela também são recursos de escritor de tabela. O recurso de leitura de tabela requer 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 ativados, todos os recursos compatíveis com o protocolo da tabela aparecem nas respectivas listas como readerFeatures
ou writerFeatures
. Ao eliminar o recurso de uma tabela, sua tabela pode remover esse comportamento para resolver com o protocolo mais baixo possível. Consulte Protocolo mais baixo possível.
Versões de protocolo baseadas em números inteiros e compatibilidade legada
Todas as tabelas incluem uma versão de protocolo baseada em números inteiros representada por minReaderVersion
e minWriterVersion
. A funcionalidade implementada usando o recurso de tabela baseia-se nessas versões de protocolo, mas muitos clientes legados de leitura e gravação continuam a usar versões de protocolo para gerenciar a compatibilidade. O Delta Lake tenta resolver o protocolo da tabela com a versão mais baixa possível para manter a compatibilidade máxima com clientes Delta modernos e antigos. Consulte Protocolo mais baixo possível.
No esquema de controle de versão do protocolo baseado em números inteiros, cada número de versão agrupa vários recursos, e os recursos entre os números de versão são cumulativos. Isso significa que, para estar em conformidade com o protocolo Delta, os clientes devem implementar suporte para todos os recursos de leitor ou escritor presentes em uma determinada versão, incluindo todos os recursos lançados anteriormente.
Databricks inclui suporte parcial sem quebra para recurso de tabela em todas as versões compatíveis do site Databricks Runtime. Os clientes do OSS Delta escolhem como implementar o suporte para determinado recurso.
Quando o protocolo da tabela muda?
O protocolo de uma tabela muda nas seguintes condições:
- Se um novo recurso for ativado, o protocolo será atualizado.
- Se um recurso de tabela for descartado, o protocolo será rebaixado.
A desativação de um recurso de tabela não resulta em downgrade de protocolo. O senhor deve descartar o recurso para removê-lo totalmente do protocolo da tabela. Nem todos os recursos da tabela podem ser descartados. Consulte Drop a Delta Lake table recurso e downgrade table protocol.
Todas as operações de alteração de protocolo entram em conflito com todas as gravações concorrente.
As leituras de transmissão falham quando encontram um commit que altera os metadados da tabela. Se quiser que a transmissão continue, o senhor deve reiniciá-la. Para conhecer os métodos recomendados, consulte Considerações sobre produção para transmissão estruturada.
A maioria dos upgrades de versão de protocolo é irreversível, e o upgrade da versão do protocolo pode interromper os leitores, gravadores ou ambos da tabela Delta Lake. Databricks Recomenda que o senhor atualize tabelas específicas somente quando necessário, como, por exemplo, para optar pelo novo recurso em Delta Lake. O senhor 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.
Os downgrades de protocolo estão disponíveis para alguns recursos. Consulte Drop a Delta Lake table recurso e downgrade table protocol.
Quando o protocolo da tabela é atualizado?
Quando o senhor ativa um recurso em uma tabela, o protocolo da tabela é atualizado automaticamente. Alguns recursos são ativados automaticamente com base na sintaxe usada nos comandos de tabela CREATE
ou ALTER
, enquanto outros recursos exigem ativação explícita por meio da configuração das propriedades da tabela. Às vezes, o senhor precisa ativar explicitamente o recurso de várias tabelas para dar suporte à funcionalidade desejada. Em outros casos, a ativação da funcionalidade pode ativar automaticamente outros recursos da tabela. Consulte a documentação da Databricks sobre a funcionalidade e a sintaxe que o senhor está usando para determinar quais recursos de tabela são necessários.
Os recursos do leitor exigem a atualização do protocolo de leitura e do protocolo de gravação. Os recursos do gravador exigem apenas a atualização do protocolo de gravação.
Por exemplo, o suporte às restrições do CHECK
é um recurso de gravação: somente os aplicativos de gravação precisam conhecer as restrições do CHECK
e aplicá-las.
Por outro lado, o mapeamento de colunas exige 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.
A Databricks não recomenda alterar as propriedades das tabelas minReaderVersion
e minWriterVersion
. Alterar essas propriedades da tabela não impede a atualização do protocolo. Definir esses valores para um valor menor não reduz a tabela. Consulte Drop a Delta Lake table recurso e downgrade table protocol.
Protocolo mais baixo possível
Em default, Delta Lake tenta usar o protocolo mais baixo possível para representar todos os recursos marcados como compatíveis com a tabela.
Esse comportamento só pode resultar na redução do protocolo da tabela, o que significa que minReaderVersion
ou minWriterVersion
podem mudar para valores mais baixos para uma tabela.
O senhor deve executar o comando DROP FEATURE
para remover um recurso de tabela da lista de recursos suportados no protocolo de tabela. Os recursos da tabela nunca são descartados automaticamente.
Se todos os Delta Lake recursos presentes em uma tabela forem totalmente compatíveis com uma versão de protocolo inferior, a tabela poderá ser revertida para uma versão de protocolo que não use os recursos da tabela para indicar a compatibilidade do leitor e do gravador. Quando esse downgrade de protocolo ocorre, a tabela pode remover o readerFeatures
ou readerFeatures
e writerFeatures
do protocolo da tabela. Isso não resulta na desativação de nenhum recurso do Delta Lake e só ocorre quando os recursos da tabela não são necessários no protocolo da tabela.
Todas as alterações que reduzem o protocolo da tabela aumentam a compatibilidade com clientes de leitores e gravadores. Isso ocorre porque os clientes leitores e gravadores devem respeitar as versões de protocolo mais baixas, mesmo que suportem versões de protocolo mais altas.
O recurso de tabela altera a forma como o recurso Delta Lake é ativado?
Se o senhor só interagir com as tabelas Delta por meio do Databricks, poderá continuar a rastrear o suporte para o recurso Delta Lake usando os requisitos mínimos do Databricks Runtime. Databricks suporta a leitura de tabelas Delta que foram atualizadas para a tabela recurso em todas as versões Databricks Runtime LTS , desde que todos os recursos usados pela tabela sejam suportados por essa versão.
Se o senhor ler e gravar em tabelas do Delta usando outros sistemas, talvez seja necessário considerar como o recurso de tabela afeta a compatibilidade, pois há o risco de o sistema não entender as versões atualizadas do protocolo.
O recurso de tabela foi introduzido no formato Delta Lake para a versão 7 do gravador e para a versão 3 do leitor. O site Databricks tem um código retroativo para todas as versões suportadas do site Databricks Runtime LTS para adicionar suporte ao recurso de tabela, mas somente para os recursos já suportados nesse site Databricks Runtime. Isso significa que, embora o senhor possa optar por usar o recurso de tabela para habilitar as colunas geradas e ainda trabalhar com essas tabelas em Databricks Runtime 9.1 LTS, as tabelas com colunas de identidade habilitadas (o que requer Databricks Runtime 10.4 LTS) ainda não são compatíveis com esse Databricks Runtime.
Como é a compatibilidade do Databricks gerenciar Delta Lake recurso?
Databricks introduz suporte para o novo recurso Delta Lake e otimizações que se baseiam em Delta Lake nas versões Databricks Runtime. Databricks As otimizações que utilizam o Delta Lake recurso respeitam os protocolos usados no OSS Delta Lake para fins de compatibilidade. Muitas otimizações do Databricks exigem a ativação do Delta Lake recurso em uma tabela, e alguns produtos do Databricks, como o DLT, dependem de muitos recursos de tabela.
- Todas as tabelas gravadas por versões inferiores do Databricks Runtime têm suporte total de leitura e gravação em versões superiores do Databricks Runtime.
- As tabelas escritas por versões superiores do site Databricks Runtime podem usar recursos de tabela que não são compatíveis com as versões inferiores do site Databricks Runtime.
- Alguns recursos podem permitir gravações de versões inferiores do site Databricks Runtime sem aplicar totalmente todas as otimizações relacionadas ao recurso de tabela habilitado.
Ao trabalhar com recurso de tabela que tem suporte retroativo para versões inferiores do site Databricks Runtime, algumas operações que são executadas em uma determinada versão do site Databricks Runtime podem não ser executadas na versão correspondente do OSS Delta. Se o seu ciclo de desenvolvimento ou arquitetura de dados incluir o OSS Delta Lake, o senhor deve sempre testar a compatibilidade nos clientes OSS Delta antes de ativar o recurso de tabela nas tabelas de produção.
Delta Lake recurso e versões necessárias do site Databricks Runtime
Os recursos são ativados em uma base de tabela por tabela. A tabela a seguir lista a versão mais baixa do Databricks Runtime com suporte total para o recurso indicado. O suporte total significa que todas as funcionalidades geralmente disponíveis para leitura e gravação são suportadas.
Recurso | Requer a versão do Databricks Runtime ou posterior | Documentação |
---|---|---|
| Todas as versões suportadas do Databricks Runtime | |
Alterar feed de dados | Todas as versões suportadas do Databricks Runtime | Usar o feed de dados de alteração do Delta Lake no Databricks |
Colunas geradas | Todas as versões suportadas do Databricks Runtime | |
Mapeamento de coluna | Todas as versões suportadas do Databricks Runtime | Renomeie e solte colunas com mapeamento de coluna Delta Lake |
Colunas de identidade | Todas as versões suportadas do Databricks Runtime | |
Recurso de tabela | Databricks Runtime 12.2 LTS | |
Vetores de deleção | Databricks Runtime 12.2 LTS | |
Carimbo de data/hora NTZ | Databricks Runtime 13.3 LTS | |
UniForm | Databricks Runtime 13.3 LTS | |
Clusters líquidos | Databricks Runtime 13.3 LTS | |
Acompanhamento de linha | Databricks Runtime 14.3 LTS | |
Ampliação de tipo | Databricks Runtime 15.4 LTS | |
Variante | Databricks Runtime 15.4 LTS | |
Agrupamentos | Databricks Runtime 16.1 | |
Pontos de verificação protegidos | Databricks Runtime 16.3 | Eliminar um recurso de tabela do Delta Lake e fazer downgrade do protocolo da tabela |
Consulte Databricks Runtime notas sobre as versões e a compatibilidade.
A DLT e o site Databricks SQL atualizam automaticamente os ambientes de tempo de execução com versões regulares para oferecer suporte a novos recursos. Consulte as notas da DLT sobre a versão e o processo de atualização da versão e Databricks SQL notas sobre a versão.
recurso por versão de protocolo
O protocolo OSS Delta Lake padronizou a tabela recurso, mas alguns clientes de leitura e gravação não implementaram o suporte à tabela recurso e continuam a usar os protocolos legados minWriterVersion
e minReaderVersion
.
Alguns clientes podem não ter suporte para todos os Delta Lake recursos, inclusive os recursos que usam versionamento de protocolo legado. Consulte a documentação do seu cliente Delta Lake para confirmar o suporte ao recurso. Sempre teste a compatibilidade antes de ativar novos recursos nas tabelas de produção.
A tabela a seguir mostra as versões mínimas de protocolo de leitura e gravação necessárias para Delta Lake recurso, além de indicar se um recurso de tabela precisa ser respeitado somente para gravações ou para leituras e gravações.
Se o senhor estiver preocupado apenas com a compatibilidade do Databricks Runtime, consulte Como o Databricks gerencia a compatibilidade do Delta Lake recurso?
Recurso |
|
| Recurso de tabela |
---|---|---|---|
2 | 1 | Escritor | |
3 | 1 | Escritor | |
4 | 1 | Escritor | |
4 | 1 | Escritor | |
5 | 2 | Leitor e escritor | |
6 | 1 | Escritor | |
7 | 1 | Escritor | |
7 | 3 | Leitor e escritor | |
7 | 3 | Leitor e escritor | |
7 | 3 | Leitor e escritor | |
7 | 2 | Escritor (1) | |
7 | 3 | Leitor e escritor | |
7 | 3 | Leitor e escritor | |
7 | 3 | Leitor e escritor | |
7 | 1 | Escritor |
(1) : Requer que o mapeamento de colunas esteja ativado.