Veragem de mesa

O registo de transações de uma tabela Delta contém informações de versão que suportam a evolução do Delta Lake. Delta Lake rastreia as versões mínimas de leitor e escritor separadamente.

Delta Lake garante retrocompatibilidade. Uma versão mais alta do Databricks Runtime é sempre capaz de ler dados que foram escritos por uma versão mais baixa.

O Lago Delta ocasionalmente quebrará a compatibilidade. Versões mais baixas de Databricks Runtime podem não ser capazes de ler e escrever dados que foram escritos por uma versão mais alta do Databricks Runtime. Se tentar ler e escrever para uma tabela com uma versão do Databricks Runtime que é muito baixa, terá um erro ao dizer-lhe que precisa de atualizar.

Ao criar uma tabela, a Delta Lake escolhe a versão mínima de protocolo exigida com base em características de mesa, como as propriedades do esquema ou da mesa. Também pode definir as versões de protocolo predefinidos definindo as configurações SQL:

  • spark.databricks.delta.properties.defaults.minWriterVersion = 2 (predefinição)
  • spark.databricks.delta.properties.defaults.minReaderVersion = 1 (predefinição)

Para atualizar uma tabela para uma versão de protocolo mais recente, utilize o DeltaTable.upgradeTableProtocol método:

Python

from delta.tables import DeltaTable
delta = DeltaTable.forPath(spark, "path_to_table") # or DeltaTable.forName
delta.upgradeTableProtocol(1, 3) # upgrades to readerVersion=1, writerVersion=3

Scala

import io.delta.tables.DeltaTable
val delta = DeltaTable.forPath(spark, "path_to_table") // or DeltaTable.forName
delta.upgradeTableProtocol(1, 3) // upgrades to readerVersion=1, writerVersion=3

Importante

As atualizações de protocolo são irreversíveis, por isso recomendamos que atualize tabelas específicas apenas quando necessário, como optar por novas funcionalidades em Delta Lake.