Apache Iceberg テーブルの作成 - AWS Lake Formation

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Apache Iceberg テーブルの作成

AWS Lake Formation は、Amazon S3 に AWS Glue Data Catalog データが存在する で Apache Parquet データ形式を使用する Apache Iceberg テーブルの作成をサポートします。Data Catalog のテーブルは、データストア内のデータを表すメタデータ定義です。デフォルトでは、Lake Formation は Iceberg v2 テーブルを作成します。v1 テーブルと v2 テーブルの違いについては、Apache Iceberg ドキュメントの「形式バージョンの変更」を参照してください。

Apache Iceberg は、非常に大規模な分析データセット用のオープンテーブル形式です。Iceberg では、スキーマの変更 (スキーマ進化とも呼ばれます) を簡単に行うことができます。つまり、基になるデータを中断することなく、データテーブルの列を追加、名前変更、または削除できます。Iceberg はデータのバージョニングもサポートしているため、データの変更を経時的に追跡できます。これにより、タイムトラベル機能が有効になるため、過去のバージョンのデータにアクセスしてクエリを実行し、更新と削除の間に行われたデータの変更を分析できます。

Lake Formation コンソールまたは の AWS Glue API CreateTableオペレーションを使用して、データカタログに Iceberg テーブルを作成できます。詳細については、CreateTable 「 アクション (Python: create_table)」を参照してください。

Data Catalog に Iceberg テーブルを作成する場合、読み取りと書き込みを実行できるように、Amazon S3 でテーブル形式とメタデータファイルのパスを指定する必要があります。

Lake Formation を使用して、Amazon S3 データロケーションを に登録するときに、きめ細かなアクセスコントロールアクセス許可を使用して Iceberg テーブルを保護することができます AWS Lake Formation。Amazon S3 のソースデータおよび Lake Formation に登録されていないメタデータの場合、アクセスは Amazon S3 のIAMアクセス許可ポリシーと AWS Glue アクションによって決まります。詳細については、「Lake Formation 許可の管理」を参照してください。

注記

Data Catalog は、パーティションの作成と Iceberg テーブルプロパティの追加をサポートしていません。

前提条件

Data Catalog に Iceberg テーブルを作成し、Lake Formation のデータアクセス許可を設定するには、次の要件を満たす必要があります。

  1. Lake Formation にデータが登録されていない状態で Iceberg テーブルを作成するために必要なアクセス許可。

    Data Catalog にテーブルを作成するために必要なアクセス許可に加えて、テーブル作成者には次のアクセス許可が必要です。

    • s3:PutObject リソース arn:aws:s3::{bucketName}

    • s3:GetObject リソース arn:aws:s3::{bucketName}

    • s3:DeleteObjectリソース arn:aws:s3::{bucketName}

  2. Lake Formation にデータが登録されている状態で Iceberg テーブルを作成するために必要なアクセス許可:

    Lake Formation を使用してデータレイク内のデータを管理および保護するには、テーブルのデータを含む Amazon S3 ロケーションを Lake Formation に登録します。これは、Lake Formation が Athena、Redshift Spectrum、Amazon などの AWS 分析サービスに認証情報を公開EMRしてデータにアクセスできるようにするためです。Amazon S3 ロケーションの登録の詳細については「データレイクへの Amazon S3 ロケーションの追加」を参照してください。

    Lake Formation に登録されている、基盤となるデータを読み書きするプリンシパルには、次のアクセス許可が必要です。

    • lakeformation:GetDataAccess

    • DATA_LOCATION_ACCESS

      ロケーションに対するデータロケーション許可を持つプリンシパルは、すべての子ロケーションに対するロケーション許可も持っています。

      データロケーション許可の詳細については、「基盤となるデータのアクセスコントロール」を参照してください。

圧縮を有効にするには、サービスが Data Catalog のテーブルを更新するアクセス許可を持つIAMロールを引き受ける必要があります。詳細については、「テーブル最適化の前提条件」を参照してください。

Iceberg テーブルの作成

Iceberg v1 および v2 テーブルは、Lake Formation コンソールを使用するか、このページに記載されている AWS Command Line Interface ように作成できます。 AWS Glue コンソールまたは を使用して Iceberg テーブルを作成することもできます AWS Glue クローラー。詳細については、「 AWS Glue デベロッパーガイド」の「Data Catalog とクローラー」を参照してください。

Iceberg テーブルを作成するには

Console
  1. にサインインし AWS Management Console、 で Lake Formation コンソールを開きますhttps://console.aws.amazon.com/lakeformation/

  2. Data Catalog で [テーブル] を選択し、[テーブルの作成] ボタンを使用して次の属性を指定します。

    • テーブル名: テーブルの名前を入力します。Athena を使用してテーブルにアクセスする場合は、「Amazon Athena ユーザーガイド」の命名に関するヒントを使用します。

    • データベース: 既存のデータベースを選択するか、新しいデータベースを作成します。

    • 説明: テーブルの説明。テーブルの内容を理解しやすくするために説明を記入できます。

    • テーブル形式: [テーブル形式] として、[Apache Iceberg] を選択します。

      テーブル最適化オプションで選択された Apache Iceberg テーブルオプション。
    • テーブルの最適化

      • 圧縮 – データファイルはマージされて書き換えられ、古いデータを削除し、断片化されたデータをより大規模で効率的なファイルに集約します。

      • スナップショットの保持 — スナップショットは Iceberg テーブルのタイムスタンプ付きバージョンです。スナップショット保持設定を使用すると、スナップショットを保持する期間と保持するスナップショットの数を強制できます。スナップショット保持オプティマイザを設定すると、古い不要なスナップショットとそれに関連する基盤ファイルを削除することで、ストレージのオーバーヘッドを管理するのに役立ちます。

      • 孤立ファイルの削除 — 孤立ファイルは、Iceberg テーブルメタデータによって参照されなくなったファイルです。これらのファイルは、特にテーブルの削除やETLジョブの失敗などの操作の後、時間の経過とともに蓄積される可能性があります。孤立ファイルの削除を有効にすると AWS Glue 、これらの不要なファイルを定期的に識別して削除し、ストレージを解放できます。

      詳細については、「Iceberg テーブルの最適化」を参照してください。

    • IAM ロール : 圧縮を実行するために、サービスはユーザーに代わってIAMロールを引き受けます。ドロップダウンを使用してIAMロールを選択できます。圧縮を有効にするために必要なアクセス許可がロールにあることを確認します。

      必要なアクセス許可の詳細については、「テーブル最適化の前提条件」を参照してください。

    • ロケーション: メタデータテーブルを保存する Amazon S3 内のフォルダへのパスを指定します。Iceberg が読み取りと書き込みを実行するには、メタデータファイルと Data Catalog 内のロケーションが必要です。

    • スキーマ: [列の追加] を選択して、列と、列のデータ型を追加します。空のテーブルを作成して、後でスキーマを更新することもできます。Data Catalog は Hive データ型をサポートしています。詳細については、「Hive データ型」を参照してください。

      Iceberg では、テーブルを作成した後でスキーマとパーティションを進化させることができます。[Athena クエリ] を使用してテーブルスキーマを更新し、[Spark クエリ] を使用してパーティションを更新できます。

AWS CLI
aws glue create-table \ --database-name iceberg-db \ --region us-west-2 \ --open-table-format-input '{ "IcebergInput": { "MetadataOperation": "CREATE", "Version": "2" } }' \ --table-input '{"Name":"test-iceberg-input-demo", "TableType": "EXTERNAL_TABLE", "StorageDescriptor":{ "Columns":[ {"Name":"col1", "Type":"int"}, {"Name":"col2", "Type":"int"}, {"Name":"col3", "Type":"string"} ], "Location":"s3://DOC_EXAMPLE_BUCKET_ICEBERG/" } }'