Управление версиями таблиц

Журнал транзакций для разностной таблицы содержит сведения о системе управления версиями, поддерживающие разностную версию Lake эволюции. Дельта Lake отслеживает минимальные версии модулей чтения и записи отдельно.

Дельта Lake гарантирует обратную совместимость. Более поздняя версия Databricks Runtime всегда может считывать данные, записанные в более ранней версии.

Дельта Lake будет периодически прерываться в прямой совместимости. Более ранние версии Databricks Runtime могут не иметь возможности чтения и записи данных, записанных в более поздней версии Databricks Runtime. При попытке чтения и записи в таблицу с недостаточной версией Databricks Runtime вы получите сообщение об ошибке, уведомляющее о том, что необходимо выполнить обновление.

При создании таблицы Дельта Lake выбирает минимальную требуемую версию протокола на основе характеристик таблицы, например схемы или свойств таблицы. Можно также задать версии протокола по умолчанию, задав конфигурации SQL:

  • spark.databricks.delta.properties.defaults.minWriterVersion = 2 (по умолчанию)
  • spark.databricks.delta.properties.defaults.minReaderVersion = 1 (по умолчанию)

Чтобы обновить таблицу до более новой версии протокола, используйте DeltaTable.upgradeTableProtocol метод:

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

Важно!

Обновления протокола необратимы, поэтому мы рекомендуем обновлять определенные таблицы только при необходимости, например, для явного согласия на новые функции в Delta Lake.