Apache Iceberg v3はクエリ性能を向上させ、IcebergまたはDelta Lakeを用いてUnityカタログ内のIceberg読み取りを組み合わせた管理テーブルの新機能を導入します。
Iceberg v3 の主な機能は次のとおりです。
- 削除ベクトル: データ ファイル全体を書き換えることなく、効率的な行レベルの削除を有効にします。 Databricks の削除ベクトルを参照してください。
- VARIANT データ型: 半構造化データの格納と処理をサポートします。 Apache Iceberg と Delta Lake のバリアント型のサポートを参照してください。
- 行の系列: テーブル データに対する増分変更を追跡します。 Azure Databricksの行追跡を参照してください。
Requirements
Iceberg v3の地理空間タイプなどの機能を持つ管理テーブルを使用するには、以下の要件を満たす必要があります。
- Unity Catalog が有効になっているワークスペース。
- Databricks Runtime 18 LTS 以降。
Iceberg v3 を使用して新しいテーブルを作成する
Iceberg v3を有効にして、Icebergリードを持つ管理されたDelta Lakeテーブルと管理されたIcebergテーブルの両方に対して新しいテーブルを作成します。
デルタ湖
Delta LakeでIceberg読み取りとIceberg v3を有効にして新しい管理テーブルを作成するには、以下のSQLコマンドを使用します。
CREATE OR REPLACE TABLE main.schema.table (c1 INT) TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'iceberg',
'delta.enableIcebergCompatV3' = 'true'
);
アイスバーグのリードに関する詳細は、「 アイスバーグクライアントとのデルタ湖の表を読む」をご覧ください。
Iceberg
Iceberg v3 を使用して新しいマネージド テーブルを作成するには、次の SQL コマンドを使用します。
CREATE OR REPLACE TABLE main.schema.table (c1 INT)
USING iceberg
TBLPROPERTIES ('format-version' = 3);
Iceberg テーブルの詳細については、「Azure Databricksの Apache Iceberg とは」を参照してください。
既存のテーブルを Iceberg v3 にアップグレードする
次の方法で、既存のテーブルを Iceberg v3 にアップグレードできます。
- テーブルで v3 機能を有効にする。
- テーブルの Iceberg 形式のバージョンを 3 に設定します (以下を参照)。
Important
RESTOREを使用して v3 にアップグレードする前にテーブルをテーブル バージョンに復元することで、テーブルを v3 から v2 にダウングレードできます。 「 テーブルを以前のバージョンにダウングレードする」を参照してください。
デルタ湖
Iceberg readsをv3に読み込むDelta Lakeを使った管理されたテーブルをアップグレードするには、以下のコマンドを使用します。
ALTER TABLE catalog.schema.table SET TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.enableIcebergCompatV2' = 'false'
);
Iceberg
Iceberg を使用してマネージド テーブルを v3 にアップグレードするには、次のコマンドを使用します。
ALTER TABLE catalog.schema.table SET TBLPROPERTIES (
'format-version' = 3
);
削除ベクトルを有効にする
削除ベクトルは行レベルのデータ変更操作を最適化し、すべての新しい Iceberg v3 テーブルで既定で有効になっています。 Databricks の削除ベクトルを参照してください。
注
既存の Iceberg テーブルで削除ベクトルを有効にすると、Iceberg 形式のバージョンが 3 にアップグレードされます。
デルタ湖
Delta LakeでIcebergリード、Iceberg v3、削除ベクトルを有効にした新しい管理テーブルを作成するには、以下のテーブルプロパティを設定してください。
CREATE TABLE catalog.schema.table (c1 INT) TBLPROPERTIES(
'delta.enableDeletionVectors' = 'true',
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);
Iceberg
削除ベクターが有効になっている Iceberg v3 を使用して新しいマネージド テーブルを作成するには、 iceberg.enableDeletionVectors table プロパティを設定します。
CREATE TABLE catalog.schema.table (c1 INT)
USING ICEBERG TBLPROPERTIES (
'iceberg.enableDeletionVectors' = 'true'
);
VARIANT データ型を使用する
VARIANT データ型を使用すると、半構造化データを格納してクエリを実行できます。
注
既存の Iceberg テーブルで VARIANT を使用すると、Iceberg 形式のバージョンが 3 にアップグレードされます。
デルタ湖
IcebergリードとVARIANT列を使ったDelta Lakeを使って新しい管理テーブルを作成するには:
CREATE TABLE catalog.schema.deltaTable (col VARIANT) TBLPROPERTIES(
'delta.enableIcebergCompatV3' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg'
);
Iceberg
VARIANT 列で Iceberg v3 を使用して新しいマネージド テーブルを作成するには:
CREATE TABLE catalog.schema.icebergTable (col VARIANT) USING iceberg;
既存のテーブルに VARIANT 列を追加するには、 ALTER TABLE コマンドを使用します。
ALTER TABLE catalog.schema.table ADD COLUMN variant_col VARIANT;
テーブルを以前の Apache Iceberg バージョンにダウングレードする
Iceberg v3 にアップグレードする前にテーブルを状態に戻す必要がある場合は、 RESTORE コマンドを使用できます。
set spark.databricks.delta.restore.protocolDowngradeAllowed = true;
RESTORE TABLE catalog.schema.table TO VERSION AS OF 1;
set spark.databricks.delta.restore.protocolDowngradeAllowed = false;
制限事項
Azure Databricksは Iceberg 仕様のバージョン 3 をサポートしますが、次の例外があります。
- 書き込みの既定値や初期既定値を含む既定値はサポートされていません。
- 次のデータ型はサポートされていません。
- 不明な型
- ナノ秒精度タイムスタンプ。
- 複数引数変換はサポートされていません。