Table versioning | Databricks on AWS [2022/2/1時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
Deltaテーブルのトランザクションログには、Delta Lakeのエボリューションをサポートするバージョン管理情報が含まれています。Delta Lakeはreaderとwriterの最小バージョンを別々にトラックします。
Delta Lakeは後方互換性を保証します。バージョンの新しいDatabricksランタイムは常に古いバージョンによって書き込まれたデータを読み込むことができます。
Delta Lakeは時に後方互換性を破壊します。古いバージョンのDatabricksランタイムでは新しいバージョンのDatabricksランタイムによって書き込まれたデータを読み取れなくなる場合があります。古すぎるバージョンのDatabricksランタイムでテーブルを読み書きしようとする際には、アップグレードすべきということを告げるエラーを受け取ることでしょう。
テーブルを作成する際、Delta Lakeはスキーマやテーブルプロパティのようなテーブル特性に基づき、要求する最低プロトコルバージョンを選択します。SQL設定によりデフォルトのプロトコルバージョンを設定することもできます。
-
spark.databricks.delta.properties.defaults.minWriterVersion = 2
(デフォルト) -
spark.databricks.delta.properties.defaults.minReaderVersion = 1
(デフォルト)
テーブルが新しいバージョンのプロトコルをサポートするようにアップグレードするには、DeltaTable.upgradeTableProtocol
メソッドを使用します。
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
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の新機能を利用するなどで必要な場合には特定のテーブルのみをアップグレードすることをお勧めします。
プロトコルバージョンでサポートされる機能
機能 | minWriterVersion |
minReaderVersion |
導入バージョン | ドキュメント |
---|---|---|---|---|
基本機能 | 2 | 1 | - | Delta Lake guide |
CHECK 制約 |
3 | 1 | Databricks Runtime 7.4 (未サポート) | CHECK constraint |
チェンジデータフィード | 4 | 1 | Databricks Runtime 8.4 (未サポート) | Change data feed |
ジェネレーテッドカラム | 4 | 2 | Databricks Runtime 8.3 (未サポート) | ジェネレーテッドカラムを使う |
カラムマッピング | 5 | 2 | Databricks Runtime 10.2 | Delta column mapping |