Como o 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 apresenta 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 da Databricks que aproveitam o recurso Delta Lake respeitam os protocolos usados no OSS Delta Lake para fins de compatibilidade.
Muitas otimizações do Databricks exigem a habilitação dos recursos do Delta Lake em uma tabela. Os recursos do Delta Lake são sempre compatíveis com versões anteriores, portanto, as tabelas gravadas por uma versão mais baixo do Databricks Runtime sempre podem ser lidas e gravadas por uma versão superior do Databricks Runtime. Habilitar alguns recursos quebra a compatibilidade com cargas de trabalho em execução em uma versão mais baixo do Databricks Runtime. Para recursos que quebram a compatibilidade, você deve atualizar todas as cargas de trabalho que fazem referência às tabelas atualizadas para usar uma versão compatível do Databricks Runtime.
Observação
O senhor pode descartar deletionVectors
, v2Checkpoint
, columnMapping
e typeWidening-preview
nos Databricks. Consulte Drop Delta table recurso.
Importante
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.
Quais recursos do Delta Lake exigem atualizações do Databricks Runtime?
Os seguintes recursos do Delta Lake quebram a compatibilidade futura. Os recursos são ativados tabela por tabela. Esta tabela lista a versão mais baixa do Databricks Runtime ainda suportada pelo Databricks.
recurso |
Requer a versão Databricks Runtime ou posterior |
Documentação |
---|---|---|
|
Databricks Runtime 9.1 LTS |
|
Alterar feed de dados |
Databricks Runtime 9.1 LTS |
Use o feed de dados de alteração do Delta Lake no Databricks |
Colunas geradas |
Databricks Runtime 9.1 LTS |
|
Mapeamento de coluna |
Databricks Runtime 10.4 LTS |
Renomeie e solte colunas com mapeamento de coluna Delta Lake |
Colunas de identidade |
Databricks Runtime 10.4 LTS |
|
Tabela de recurso |
Databricks Runtime 12.2 LTS |
|
Vetores de deleção |
Databricks Runtime 12.2 LTS |
|
TimestampNTZ |
Databricks Runtime 13.3 LTS |
|
Uniforme |
Databricks Runtime 13.3 LTS |
|
clusterslíquidos |
Databricks Runtime 13.3 LTS |
|
Fila acompanhamento |
Databricks Runtime 14.1 |
|
Ampliação do tipo |
Databricks Runtime 15.2 |
|
Variante |
Databricks Runtime 15.3 |
Consulte notas do Databricks Runtime sobre versões de versão e compatibilidade.
Observação
Delta Live Tables e Databricks SQL atualizam automaticamente ambientes Runtime com versões regulares para dar suporte a novos recursos. Consulte Delta Live Tables notas sobre a versão e o processo de atualização de lançamento e Databricks SQL notas sobre a versão.
O que é uma especificação de protocolo de tabela?
Cada tabela Delta possui uma especificação de protocolo que indica o conjunto de recursos que a tabela suporta. A especificação de protocolo é usada por aplicativos que leem ou gravam a 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 suportado 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 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. A Databricks recomenda que o senhor atualize tabelas específicas somente quando necessário, como para optar por um novo recurso no 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 Recurso da tabela Drop Delta.
Leia o protocolo
O protocolo de leitura lista todos os recursos suportados por uma tabela e que um aplicativo deve entender para ler a tabela corretamente. Atualizar o 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 Snapshot da tabela. Dessa forma, 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 de uma carga de trabalho no Databricks, deverá atualizar para um Databricks Runtime superior que ofereça suporte a esse protocolo.
Protocolo de gravação
O protocolo de gravação lista todos os recursos suportados por uma tabela e que um aplicativo deve entender para gravar na tabela corretamente. Atualizar o protocolo de gravação de uma tabela requer que todos os aplicativos de gravação suportem os recursos adicionados. Não afeta aplicativos somente leitura, a menos que o protocolo de leitura também seja atualizado.
Quais protocolos devem ser atualizados?
Alguns recursos requerem 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 de protocolo de gravação: apenas 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 de leitura devem entender o mapeamento de colunas para que possam ler os dados corretamente.
Versões mínimas de leitor e escritor
Observação
O senhor deve atualizar explicitamente a versão do protocolo da tabela ao ativar o mapeamento de colunas.
Quando o senhor ativa o recurso Delta em uma tabela, o protocolo da tabela é atualizado automaticamente. A Databricks recomenda não alterar as propriedades das tabelas minReaderVersion
e minWriterVersion
. A alteração dessas propriedades da tabela não impede a atualização do protocolo. A definição desses valores para um valor mais baixo não desvaloriza a tabela. Consulte Recurso da tabela Drop Delta.
O que são recursos de tabela?
Em Databricks Runtime 12.2 LTS e acima, Delta Lake a tabela recurso introduz sinalizadores granulares que especificam quais recursos são suportados por uma determinada tabela. Em Databricks Runtime 11.3 LTS e abaixo, Delta Lake recurso foram ativados em pacotes chamados versões de protocolo. Os recursos de tabela são os sucessores das versões de protocolo e foram projetados com o objetivo de aumentar a flexibilidade dos clientes que leem e gravam Delta Lake. Consulte O que é uma versão de protocolo?
Observação
Os recursos da tabela têm requisitos de versão de protocolo. Ver recurso 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 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 com suporte no Delta Lake, consulte o protocolo Delta Lake.
Os recursos da tabela alteram como os recursos do Delta Lake são ativados?
Se você interagir apenas com tabelas Delta por meio do Databricks, poderá continuar a acompanhar o suporte para os recursos do Delta Lake usando os requisitos mínimos do Databricks Runtime. O 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 compatíveis com essa versão.
Se você ler e gravar em tabelas Delta usando outros sistemas, talvez seja necessário considerar como os recursos da tabela afetam a compatibilidade, porque há o risco de o sistema não entender as versões de protocolo atualizadas.
Importante
Os recursos da tabela são introduzidos no formato Delta Lake para a versão 7 do gravador e a versão 3 do leitor. O Databricks fez o backport do código para todas as versões LTS do Databricks Runtime com suporte para adicionar suporte aos recursos da 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, tabelas com colunas de identidade habilitadas (que requerem 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 grupo específico de recursos da tabela. Em Databricks Runtime 11.3 LTS e abaixo, o senhor não pode ativar o recurso 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 protocolo de gravação. Os logs de transações para uma tabela Delta contêm informações de versão de protocolo que oferecem suporte à evolução do Delta Lake. Consulte Revisar os detalhes da tabela Delta Lake com detalhes de descrição.
As versões do protocolo agrupam todos os recursos dos protocolos anteriores. Ver recurso por versão do protocolo.
Observação
Começando com a versão 7 do gravador 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 suportados por outros clientes em seu ecossistema de dados. Consulte O que são recursos de tabela?.
recurso por versão do protocolo
A tabela a seguir mostra as versões de protocolo mínimas necessárias para os recursos do Delta Lake.
Observação
Se você estiver preocupado apenas com a compatibilidade do Databricks Runtime, consulte Qual recurso do Delta Lake exige atualizações do Databricks Runtime?. Delta compartilhamento só suporta leitura de tabelas com recurso que requerem minReaderVersion
= 1
.
recurso |
|
|
Documentação |
---|---|---|---|
Funcionalidade básica |
2 |
1 |
|
|
3 |
1 |
|
Alterar feed de dados |
4 |
1 |
Use o feed de dados de alteração do Delta Lake no Databricks |
Colunas geradas |
4 |
1 |
|
Mapeamento de coluna |
5 |
2 |
Renomeie e solte colunas com mapeamento de coluna Delta Lake |
Colunas de identidade |
6 |
2 |
|
Recurso de tabela lido |
7 |
1 |
|
Gravação de recursos de tabela |
7 |
3 |
|
Fila acompanhamento |
7 |
1 |
|
Vetores de deleção |
7 |
3 |
|
TimestampNTZ |
7 |
3 |
|
clusterslíquidos |
7 |
3 |
|
Uniforme |
7 |
2 |
|
Ampliação do tipo |
7 |
3 |
|
Variante |
7 |
3 |