Amazon Web Services ブログ
Amazon S3 Tables では、Apache Iceberg V3 のすべてのデータ型がサポートされるようになりました
Amazon S3 テーブルは、Apache アイスバーグ V3 仕様のすべてのデータタイプをサポートするようになりました。V3 テーブルを作成するか、既存の V2 テーブルをアップグレードして、削除ベクトル、行系列、バリアント、ナノ秒タイムスタンプ、不明、ジオメトリ、地理などの新しいデータタイプなどの V3 機能を活用できます。
Apache Iceberg は、大規模な分析データセットを管理するためのオープンスタンダードになりました。Amazon S3 などのオブジェクトストレージのデータレイクにある開いている Parquet ファイルにデータを保存したまま、スキーマの進化、隠しパーティショニング、タイムトラベルクエリなどの機能を使用してペタバイト規模のテーブルを管理できます。Amazon S3 Tables は、自動コンパクション、メンテナンス、レプリケーション、インテリジェント階層化などのフルマネージド機能を備え、アイスバーグテーブルが拡大してもパフォーマンスと費用対効果を維持できるように設計されたストレージを提供します。
Apache Iceberg V2 テーブルで分析を実行しているチームは、データが増えるにつれて同じ制限に達することがよくあります。20億行のテーブルから50,000件のユーザーレコードを削除するというコンプライアンス要求があると、位置削除ファイルが残り、コンパクションが実行されるまでクエリが遅くなります。半構造化イベントは JSON 文字列として生成され、すべてのクエリで解析する必要があります。地理空間座標とナノ秒精度のタイムスタンプは、文字列または整数としてエンコードされます。回避策を実行するたびに、ストレージコスト、クエリレイテンシー、パイプラインコードが追加されます。V3では、Iceberg が半構造化データや地理空間データのネイティブサポート、より高速な行レベルの操作、データガバナンスのための組み込み行リネージを提供することで、これらの課題を解決しています。
2026 年 9 月 30 日より、Amazon S3 テーブルは、バリアント、ナノ秒タイムスタンプ、ジオメトリ、ジオグラフィー、unknown を含むすべての V3 データタイプをサポートし、削除ベクトルや行リネージもサポートします。新しい V3 テーブルを作成したり、既存の V2 テーブルをその場でアップグレードしたりしても、S3 テーブルは引き続きコンパクションとメンテナンスを実行します。
Apache Iceberg V3
V3 はIceberg仕様の最新バージョンです。多くの改良点の中でも、V3 には V2 で最も一般的な問題点に対処する機能が導入されています。これには以下が含まれます。
削除ベクトルは、V2 の位置削除ファイルをコンパクトなバイナリ形式に置き換えます。この50,000行のコンプライアンス削除では、数千の小さな削除ではなく、1つの削除ベクタファイルが書き込まれるようになり、圧縮時間と削除ファイルのオーバーヘッドが大幅に削減されました。
行系統は _row_id と _last_updated_sequence_number を各レコードに自動的に追加します。ダウンストリームのパイプラインでは、テーブル全体をスキャンしなくても、これらのフィールドをクエリして変更された行を見つけることができます。
新しいデータタイプでは、半構造化データ、地理空間データ、ナノ秒精度データを文字列や整数としてエンコードする代わりにネイティブに保存できます。
- ナノ秒タイムスタンプ (tz)(ナノ秒精度のタイムスタンプ用)
- 地理空間データ用の ジオメトリ と ジオグラフィー
- 既知の型がない列向けの Unknown
バリアントデータタイプは、半構造化データを列指向形式で格納します。書き込み中、エンジンはバリアントデータを非表示の列に細断し、統計を収集します。クエリ時には、これらの統計情報によってファイルプルーニングが可能になり、JSON 文字列を解析する場合と比較して I/O が大幅に削減されます。
以下のセクションでは、これらの V3 機能を実際に使用する方法を例を挙げて説明し、テーブルを作成する方法、新しいデータ型を操作する方法、およびデータを大規模に管理する方法を例を挙げて説明します。
使用の開始
小売分析チームは、ウェブアプリとモバイルアプリ全体でユーザーの行動を追跡します。各イベントの構造は異なります。ページビューには URL と期間、購入にはアイテムと金額、検索にはクエリ用語と結果数が含まれます。V3 のバリアントタイプでは、事前定義済みのスキーマなしで、すべてのイベントシェイプを 1 つのテーブルに格納できます。
CREATE TABLE my_catalog.namespace.clickstream (
event_id bigint,
event_time TIMESTAMP,
user_id string,
payload variant
)
USING iceberg
TBLPROPERTIES (『format-version』 = 『3』)
スキーマの進化を気にすることなく、さまざまなペイロード形状のイベントを挿入できます。
INSERT INTO my_catalog.namespace.clickstream VALUES
(1, current_timestamp(), 『user-42』,
PARSE_JSON(『{「action」: 「purchase」, 「amount」: 99.99, 「items」: [「laptop_stand」]}』)),
(2, current_timestamp(), 『user-17』,
PARSE_JSON ('{"action」:「page_view」,「url」:「/products/webcam」,「duration_ms」: 4200}');
次に、読み取り時に PARSE_JSON を使用せずに、バリアント列を直接クエリします。Amazon EMR Spark では、variant_get を使用してください:
SELECT
event_id,
user_id,
variant_get(payload, 『$.action』, 『string』) AS action,
variant_get(payload, 『$.amount』, 『double』) AS amount
my_catalog.namespace.clickstream から
WHERE variant_get (ペイロード、』$.action』、』文字列』) = 『purchase』
AND variant_get(ペイロード, 『$.amount』, 『double』) > 50.00ペイロード
書き込み操作の削除ベクタを有効にするには、マージオン読み取りモードを設定します。
ALTER TABLE my_catalog.namespace.clickstream
SET TBLPROPERTIES (
『write.delete.mode』 = 『merge-on-read』,
『write.update.mode』 = 『merge-on-read』,
『write.merge.mode』 = 『merge-on-read』
)
これで、コンプライアンス削除を実行すると、V3 はデータファイルを書き換える代わりに小さな削除ベクタを書き込むようになりました。
DELETE FROM my_catalog.namespace.clickstream
WHERE user_id = 『user-42』
S3 Tables Compaction は、次のメンテナンスサイクルでこれらの削除ベクターファイルを自動的に処理します。
V2 からのアップグレード
AWS では、V3 への移行中の中断を最小限に抑えるために、両方のバージョンに下位互換性を提供しています。既存の V2 リーダーは、V3 機能を完全に採用する準備ができるまで、アップグレードされたテーブルで引き続き機能します。詳細については、S3 テーブル Iceberg V3 ドキュメントを参照してください。
データを書き換えることなく、既存のテーブルをアトミックにアップグレードします。
ALTER TABLE my_catalog.namespace.existing_table
SET TBLPROPERTIES (『format-version』 = 『3』)
次の圧縮サイクルで、S3 テーブルは古い V2 削除ファイルを削除します。新しい修正では削除ベクトルが自動的に使用されます。行系統フィールドは、アップグレード後の最初のデータ変更時に初期化されます。
これは一方向の操作です。Apache Iceberg 仕様は、V3 から V2 へのダウングレードをサポートしていません。アップグレードする前に、テーブルにアクセスするすべてのエンジンが V3 をサポートしていることを確認してください。
インクリメンタルパイプラインに行系統を使用する
テーブルに V3 データが含まれたら、行系統を使用して効率的なインクリメンタルパイプラインを構築します。
SELECT *, _row_id, _last_updated_sequence_number
my_catalog.namespace.clickstream から
WHERE _last_updated_sequence_number > 42
これにより、シーケンス番号 42 以降に変更された行のみが返されます。ダウンストリームジョブでは、テーブル全体をスキャンする代わりに、この値を確認して、実行のたびに新しい変更のみを処理できます。
AWS 分析サービス間の互換性
AWS は、主要なクラウドプロバイダーの中で最も幅広いネイティブ Apache Iceberg サポートを提供しており、データスタックのすべてのレイヤー(取り込み、ストレージ、カタログ、分析)で Iceberg 互換サービスを提供しています。Amazon S3 テーブルに V3 テーブルを保存して自動的に最適化したり、 Amazon EMR Spark でデータを書き込んだり、AWS Glue を使用してデータを統合および管理したり、Amazon Redshift で分析を実行したりすることができます。V3 の AWS アナリティクスサポートの詳細については、 Apache Iceberg on AWS 規範的ガイダンスを参照してください。
S3 テーブルと AWS Glue データカタログはどちらも Iceberg REST Catalog (IRC) API をサポートしているため、カタログエンドポイントに関係なくエンジン間の相互運用が可能になります。
知っておくべきこと
- S3 Tables Compactionは、V3削除ベクターファイルを完全にサポートし、行系統メタデータを保持します。
- 新しい V3 データタイプ (バリアント、ナノ秒タイムスタンプ、ジオメトリ、地理、不明) には、Apache Spark 4.0 以降 (AWS Glue 6.0 以降) または Amazon EMR リリース 8.1 以降で構築されたエンジンが必要です。
- V3 テーブルは、Amazon S3 コンソール、AWS CLI、またはアイスバーグ REST カタログ API をサポートする任意のエンジンから作成できます。
- 新しい V3 データ型は、Parquet ファイル形式を使用するテーブルでのみサポートされます (ORC や Avro はサポートされません)。
- variant、geometry、geography、またはナノ秒タイムスタンプ型の列は、コンパクションのためのテーブルのソート順に含めることはできません。これらの列を含むテーブルは、ソート順序で他のタイプの列が使用されている場合でも、ソート方式と Z 順序方式ではコンパクトになります。
今すぐご利用いただけます
すべての Apache Iceberg V3 データタイプの Amazon S3 テーブルサポートが、S3 テーブルがサポートされているすべての AWS リージョンで利用できるようになりました。Apache Iceberg V3 サポートは追加料金なしでご利用いただけます。標準の S3 テーブル料金が適用されます。
開始するには、Amazon S3 テーブルのドキュメントを参照するか、 Amazon S3 コンソールからテーブルバケットを作成します。API を呼び出したり、ドキュメントを検索したり、リージョンごとの提供状況を確認したり、この新機能に関するトラブルシューティングを確認したりする場合は、お好みの AI ツールで AWS MCP Server とプラグインを使用してみてください。フィードバックは、AWS re:Post 宛てに、または通常の AWS サポート担当者を通じてお寄せください。
– Daniel Abib
原文はこちらです。