データ接続と統合Iceberg tablesIcebergストレージのアーキテクチャと設定フォーマットバージョン

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

Iceberg 形式バージョンのサポート

Apache Iceberg テーブル形式の仕様 ↗にはバージョンがあり、各バージョンは前のバージョンを拡張しています。ただし、すべてのツールやクライアントが最新バージョンに対応しているとは限りません。

Foundry は、形式バージョン2および3の Iceberg テーブルの読み取りと書き込みをサポートしています。

形式バージョンのデフォルト

デフォルトで使用される形式バージョンは、クライアント側の Iceberg テーブル暗号化が有効かどうかによって異なります。

クライアント側の暗号化が無効なテーブルでは、v3 仕様に対応するクライアントが限られているため、Foundry のデフォルトは v2 です。

クライアント側の暗号化が有効なテーブルでは、Iceberg テーブル暗号化 ↗が v3 の機能であるため、Foundry のデフォルトは v3 です。

形式バージョンをオーバーライドする

必要に応じて、format-version テーブルプロパティを使用してバージョンを明示的に指定し、デフォルトの形式バージョンをオーバーライドできます。

たとえば、次を実行できます。

Copied!
1 2 3 4 5 6 7 8 9 10 11 @transform.spark.using( output=TableOutput("/path/table_name"), ) def compute(ctx: TransformContext, output: TableTransformOutput) -> None: df_custom = ctx.spark_session.createDataFrame([["Hello"], ["World"]], schema=["phrase"]) df_custom.writeTo(output.identifier)\ .using("iceberg") \ .tableProperty("format-version", "3") \ .createOrReplace()
Copied!
1 2 ALTER TABLE `ri.tables.main.table.00000002...` SET TBLPROPERTIES ('format-version' = '3');
Copied!
1 2 3 4 5 catalog.create_table( "path.table", schema=schema, properties={"format-version": "3"} )

テーブルを v2 から v3 にアップグレードできますが、v3 のテーブルを v2 にダウングレードすることはできません。

列のデータ型のサポート

Foundry は、次の Iceberg v2 の列のデータ型に対応していません。

  • time

Foundry は、次の Iceberg v3 の列のデータ型に対応していません。

  • geography
  • geometry
  • time
  • timestamp_ns
  • timestamptz_ns
  • unknown
  • variant

これらの列を Foundry で使用する前に、対応しているデータ型に変換してください。たとえば、ナノ秒精度のタイムスタンプは、timestamp_ns を timestamp に、timestamptz_ns を timestamptz にマッピングして、マイクロ秒精度に変換します。