テーブルのバージョン管理 Table versioning

デルタテーブルのトランザクションログには、Delta Lake の進化に対応したバージョン管理情報が含まれています。The transaction log for a Delta table contains versioning information that supports Delta Lake evolution. Delta Lake は、最小の リーダーとライターのバージョンを 個別に追跡します。Delta Lake tracks minimum reader and writer versions separately.

Delta Lake は 旧バージョン との互換性を保証します。Delta Lake guarantees backward compatibility. より新しいバージョンの Databricks Runtime は、常に下位バージョンで書き込まれたデータを読み取ることができます。A higher version of Databricks Runtime is always able to read data that was written by a lower version.

デルタレイクが 上位互換性 を損なうことがあります。Delta Lake will occasionally break forward compatibility. より古いバージョンの Databricks Runtime では、より新しいバージョンの Databricks Runtime によって書き込まれたデータの読み取りと書き込みができない可能性があります。Lower versions of Databricks Runtime may not be able to read and write data that was written by a higher version of Databricks Runtime. Databricks Runtime のバージョンのを使用しているテーブルに対して読み取りと書き込みを実行しようとすると、アップグレードが必要であることを示すエラーが表示されます。If you try to read and write to a table with a version of Databricks Runtime that is too low, you’ll get an error telling you that you need to upgrade.

テーブルを作成するとき、Delta Lake は、スキーマやテーブルのプロパティなどのテーブル特性に基づいて、最低限必要なプロトコルバージョンを選択します。When creating a table, Delta Lake chooses the minimum required protocol version based on table characteristics such as the schema or table properties. SQL 構成を設定して、既定のプロトコルバージョンを設定することもできます。You can also set the default protocol versions by setting the SQL configurations:

  • spark.databricks.delta.properties.defaults.minWriterVersion = 2 (既定値)spark.databricks.delta.properties.defaults.minWriterVersion = 2 (default)
  • spark.databricks.delta.properties.defaults.minReaderVersion = 1 (既定値)spark.databricks.delta.properties.defaults.minReaderVersion = 1 (default)

テーブルを新しいプロトコルバージョンにアップグレードするには、次のメソッドを使用し DeltaTable.upgradeTableProtocol ます。To upgrade a table to a newer protocol version, use the DeltaTable.upgradeTableProtocol method:

PythonPython

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

ScalaScala

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 の新機能をオプトインする場合などに使用します。Protocol upgrades are irreversible, therefore we recommend you upgrade specific tables only when needed, such as to opt-in to new features in Delta Lake.