注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
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 2ALTER TABLE `ri.tables.main.table.00000002...` SET TBLPROPERTIES ('format-version' = '3');
Copied!1 2 3 4 5catalog.create_table( "path.table", schema=schema, properties={"format-version": "3"} )
テーブルを v2 から v3 にアップグレードできますが、v3 のテーブルを v2 にダウングレードすることはできません。
Foundry は、次の Iceberg v2 の列のデータ型に対応していません。
timeFoundry は、次の Iceberg v3 の列のデータ型に対応していません。
geographygeometrytimetimestamp_nstimestamptz_nsunknownvariantこれらの列を Foundry で使用する前に、対応しているデータ型に変換してください。たとえば、ナノ秒精度のタイムスタンプは、timestamp_ns を timestamp に、timestamptz_ns を timestamptz にマッピングして、マイクロ秒精度に変換します。