Amazon Redshift での Apache Iceberg テーブルの使用
このトピックでは、Redshift Spectrum または Redshift Serverless で Apache Iceberg 形式のテーブルを使用する方法について説明します。Apache Iceberg は、巨大な分析テーブル用の高パフォーマンス形式です。
Redshift Spectrum または Redshift Serverless を使用して、AWS Glue Data Catalogでカタログ化されている Apache Iceberg テーブルにクエリを実行できます。Apache Iceberg は、データレイク用のオープンソースのテーブル形式です。詳細については、Apache Iceberg ドキュメントで「Apache Iceberg
Amazon Redshift では、Apache Iceberg テーブルに対してクエリを実行する際に、トランザクションの一貫性を保ちます。Amazon Redshift を使用してクエリを実行しながら、Amazon Athena や Amazon EMR などの ACID (原子性、一貫性、分離性、持続性) 準拠のサービスを通じてテーブル内のデータを操作できます。Amazon Redshift では、Apache Iceberg メタデータに保存されているテーブル統計を使用してクエリプランを最適化し、クエリ処理中のファイルスキャンを減らすことができます。Amazon Redshift SQL を使用すると、Redshift テーブルをデータレイクテーブルと結合できます。
Amazon Redshift で Iceberg テーブルの使用を開始するには
Amazon Athena や Amazon EMR などの互換性のあるサービスを使用して AWS Glue Data Catalogのデータベースに Apache Iceberg テーブルを作成します。Athena を使用して Iceberg テーブルを作成するには、「Amazon Athena ユーザーガイド」の「Apache Iceberg テーブルの使用」を参照してください。
Amazon Redshift クラスターまたは Redshift Serverless ワークグループを作成し、データレイクへのアクセスを許可する IAM ロールを関連付けます。クラスターやワークグループの作成方法については、「Amazon Redshift 入門ガイド」の「Amazon Redshift でプロビジョニングされたデータウェアハウス」と「Amazon Redshift Serverless データウェアハウスの使用を開始」を参照してください。
クエリエディタ v2 またはサードパーティの SQL クライアントを使用して、クラスターまたはワークグループに接続します。クエリエディタ v2 を使用して接続する方法については、「Amazon Redshift 管理ガイド」の「SQL クライアントツールを使用して Amazon Redshift データウェアハウスに接続する」を参照してください。
Iceberg テーブルを含む特定のデータカタログデータベース用の外部スキーマを Amazon Redshift データベースに作成します。外部スキーマの作成の詳細については、「Amazon Redshift Spectrum 用の外部スキーマ」を参照してください。
SQL クエリを実行して、作成した外部スキーマ内の Iceberg テーブルにアクセスします。
Amazon Redshift で Apache Iceberg テーブルを使用する際の考慮事項
Amazon Redshift で Iceberg テーブルを使用する場合は、以下の点を考慮してください。
-
Iceberg バージョンのサポート — Amazon Redshift は、以下のバージョンの Iceberg テーブルに対するクエリの実行をサポートしています。
バージョン 1 は、イミュータブルなデータファイルを使用して、大規模な分析テーブルをどのように管理するかを定義します。
バージョン 2 は、行レベルの更新と削除をサポートするとともに、既存のデータファイルを変更せずに維持し、削除ファイルを使用してテーブルデータの変更を処理する機能を追加します。
バージョン 1 とバージョン 2 のテーブルの違いについては、Apache Iceberg ドキュメントで「フォーマットバージョンの変更
」を参照してください。 -
クエリのみ — Amazon Redshift は Apache Iceberg テーブルへの読み取り専用アクセスをサポートしています。また、トランザクションの一貫性のある選択クエリをサポートしています。Amazon Athena などのサービスを使用して、AWS Glue Data Catalogで Iceberg テーブルのスキーマを定義および更新できます。
-
パーティションの追加 — Apache Iceberg テーブルにパーティションを手動で追加する必要はありません。Apache Iceberg テーブルの新しいパーティションは Amazon Redshift によって自動的に検出されるため、テーブル定義のパーティションを更新するための手動操作は必要ありません。パーティション仕様の変更も、ユーザーの介入なしにクエリに自動的に適用されます。
-
Amazon Redshift への Iceberg データのインジェスト — INSERT INTO コマンドまたは CREATE TABLE AS コマンドを使用して、Iceberg テーブルからローカルの Amazon Redshift テーブルにデータをインポートできます。現在、COPY コマンドを使用して Apache Iceberg テーブルの内容をローカルの Amazon Redshift テーブルにインジェストすることはできません。
-
マテリアライズドビュー — Amazon Redshift の他の外部テーブルと同じように、Apache Iceberg テーブルでマテリアライズドビューを作成できます。他のデータレイクテーブル形式の場合と同じ考慮事項が Apache Iceberg テーブルにも当てはまります。データレイクテーブルのインクリメンタル更新、自動更新、自動クエリ書き換え、自動 MV は現在サポートされていません。
-
AWS Lake Formation のきめ細かなアクセス制御 — Amazon Redshift は、Apache Iceberg テーブルに対する AWS Lake Formation のきめ細かなアクセス制御をサポートしています。
-
ユーザー定義のデータ処理パラメータ — Amazon Redshift は、Apache Iceberg テーブルに対するユーザー定義のデータ処理パラメータをサポートしています。既存のファイルに対するユーザー定義のデータ処理パラメータを使用して、外部テーブルでクエリされるデータを調整し、スキャンエラーを回避します。これらのパラメータは、テーブルスキーマとファイル内の実際のデータとの不一致を処理する機能を提供します。Apache Iceberg テーブルに対してもユーザー定義のデータ処理パラメータを使用できます。
-
データ共有 — Amazon Redshift のデータ共有では現在、データレイクテーブル (Apache Iceberg テーブルを含む) をサポートしていません。
-
タイムトラベルクエリ — タイムトラベルクエリは現在、Apache Iceberg テーブルに対してサポートされていません。
-
料金 — クラスターから Iceberg テーブルにアクセスすると、Redshift Spectrum の料金が請求されます。ワークグループから Iceberg テーブルにアクセスすると、Redshift Serverless の料金が請求されます。Redshift Spectrum と Redshift Serverless の料金の詳細については、「Amazon Redshift の料金
」を参照してください。