あるデータエンジニアリングチームは、Amazon S3 上のペタバイト規模のデータレイクを管理しています。複数の ETL ジョブが同じデータセットに並行書き込みを行う必要があり、以下の要件があります。 ・ACID トランザクション(並行書き込み時のデータ整合性保証) ・タイムトラベル(過去の任意時点のスナップショットをクエリ) ・スキーマエボリューション(既存データファイルを書き換えずに列の追加・削除) ・Amazon Athena と AWS Glue ETL の両方からクエリ・処理が可能 すべての要件を満たすデータフォーマットと統合構成として最も適切なものはどれですか?
Apache Iceberg は、データレイク向けのオープンテーブル形式で、AWS が公式にサポートしています。 Iceberg の主な機能は以下の通りです。 ①ACID トランザクション:スナップショットアイソレーションにより並行書き込み時のデータ整合性を保証 ②タイムトラベル:スナップショット履歴が保持されており、特定時点のデータを AS OF TIMESTAMP でクエリ可能 ③スキーマエボリューション:既存ファイルの書き換えなしに列の追加・削除・型変更が可能 ④AWS ネイティブ統合:Athena V3・AWS Glue ETL・EMR がいずれも Iceberg を公式サポート AWS Glue Data Catalog を Iceberg のメタストアとして使用することで、Athena と Glue ETL の両方から同一テーブルに対して一貫したクエリが可能になり、すべての要件を満たします。 選択肢Bの Apache Hudi も ACID・タイムトラベルをサポートするが、Redshift Spectrum の Hudi ネイティブ対応は限定的であり、要件で明示されている Athena・Glue ETL との標準統合という点では Iceberg が優位。また Redshift Spectrum は要件に含まれていない。 選択肢Cの Parquet + Glue ジョブブックマークは差分処理には有効だが、ACID トランザクション・タイムトラベル・スキーマエボリューション(ファイル書き換えなし)をネイティブに提供する機能ではない。 選択肢Dの ORC + Hive スタイルパーティショニングは従来の方法であり、ACID トランザクションやタイムトラベルをサポートしない。