Apache Iceberg v3 の機能を使用する

Apache Iceberg v3はクエリ性能を向上させ、IcebergまたはDelta Lakeを用いてUnityカタログ内のIceberg読み取りを組み合わせた管理テーブルの新機能を導入します。

Iceberg v3 の主な機能は次のとおりです。

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 にアップグレードできます。

  1. テーブルで v3 機能を有効にする。
  2. テーブルの 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 をサポートしますが、次の例外があります。

  • 書き込みの既定値や初期既定値を含む既定値はサポートされていません。
  • 次のデータ型はサポートされていません。
    • 不明な型
    • ナノ秒精度タイムスタンプ。
  • 複数引数変換はサポートされていません。