Iceberg テーブルの作成 - Amazon Athena

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

Iceberg テーブルの作成

Athena で使用する Iceberg テーブルを作成するには、このページに記載されている CREATE TABLEステートメントを使用するか、 AWS Glue クローラを使用できます。

CREATE TABLE ステートメントの使用

Athena は Iceberg v2 テーブルを作成します。v1 テーブルと v2 テーブルの違いについては、Apache Iceberg ドキュメントの形式バージョンの変更を参照してください。

Athena CREATE TABLE は、データを含めずに Iceberg テーブルを作成します。テーブルで Iceberg オープンソース Glue カタログが使用されている場合は、Apache Spark などの外部システムからテーブルを直接クエリできます。外部テーブルを作成する必要はありません。

警告

CREATE EXTERNAL TABLE を実行すると、「External keyword not supported for table type ICEBERG」(テーブルタイプ ICEBERG では外部キーワードはサポートされていません) というエラーメッセージが表示されます。

Athena から Iceberg テーブルを作成するには、次に示す構文の概要のように、テーブルプロパティの 'table_type'TBLPROPERTIES 句の 'ICEBERG' に設定します。

CREATE TABLE [db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] ) [PARTITIONED BY (col_name | transform, ... )] LOCATION 's3://DOC-EXAMPLE-BUCKET/your-folder/' TBLPROPERTIES ( 'table_type' ='ICEBERG' [, property_name=property_value] )

Iceberg テーブルでクエリできるデータ型の詳細については、「Athena の Iceberg テーブルでサポートされているデータ型」を参照してください。

パーティション

パーティションを持つ Iceberg テーブルを作成するには、PARTITIONED BY 構文を使用します。パーティション化に使用される列は、最初に列宣言で指定する必要があります。PARTITIONED BY 句には、列の型を含めることはできません。CREATE TABLE 構文にパーティション変換を定義することもできます。パーティション化に複数の列を指定するには、次の例のように、列をカンマ (,) 文字で区切ります。

CREATE TABLE iceberg_table (id bigint, data string, category string) PARTITIONED BY (category, bucket(16, id)) LOCATION 's3://DOC-EXAMPLE-BUCKET/your-folder/' TBLPROPERTIES ( 'table_type' = 'ICEBERG' )

次の表に、使用できるパーティション変換関数を示します。

機能 説明 サポートされている型
year(ts) 年によるパーティション date, timestamp
month(ts) 月によるパーティション date, timestamp
day(ts) 日によるパーティション date, timestamp
hour(ts) 時間によるパーティション timestamp
bucket(N, col) ハッシュ値 mod N のバケットによるパーティション これは、Hive テーブルのハッシュバケット作成と同じ概念です。 int, long, decimal, date, timestamp, string, binary
truncate(L, col) L に切り捨てられた値によるパーティション int, long, decimal, string

Athena は Iceberg の隠しパーティション化をサポートしています。詳細については、「Apache Iceberg ドキュメント」の「Iceberg's hidden partitioning」(Iceberg の隠しパーティション化) を参照してください。

テーブルプロパティ

このセクションでは、CREATE TABLE ステートメントの TBLPROPERTIES 句でキーと値のペアとして指定できるテーブルプロパティについて説明します。Athena では、Iceberg テーブルを作成または変更するために、テーブルプロパティで事前定義されたキーと値のペアのリストのみが使用できます。次の表に、指定可能なテーブルプロパティを示します。圧縮オプションの詳細については、このドキュメントの「Iceberg テーブルの最適化」を参照してください。Athena による、特定のオープンソーステーブル設定プロパティのサポートをご希望の場合は、athena-feedback@amazon.com までフィードバックをお送りください。

format

説明 ファイルデータ形式
使用できるプロパティ値 サポートされるファイル形式と圧縮の組み合わせは、Athena エンジンのバージョンによって異なります。詳細については、「ファイル形式別の Iceberg テーブル圧縮サポート」を参照してください。
デフォルト値 parquet

write_compression

説明 ファイル圧縮コーデック
使用できるプロパティ値 サポートされるファイル形式と圧縮の組み合わせは、Athena エンジンのバージョンによって異なります。詳細については、「ファイル形式別の Iceberg テーブル圧縮サポート」を参照してください。
デフォルト値

デフォルトの書き込み圧縮は Athena エンジンのバージョンによって異なります。詳細については、「ファイル形式別の Iceberg テーブル圧縮サポート」を参照してください。

optimize_rewrite_data_file_threshold

説明 データ最適化固有の設定。最適化が必要なデータファイルの数が指定されたしきい値より少ない場合、データファイルは書き換えられません。これにより、蓄積するデータファイルの数を増やしてターゲットサイズに近いファイルを生成し、不要な計算をスキップしてコストを削減できます。
使用できるプロパティ値 正数。50 未満にする必要があります。
デフォルト値 5

optimize_rewrite_delete_file_threshold

説明 データ最適化固有の設定。データファイルに関連付けられた削除ファイルの数がしきい値より少ない場合、データファイルは書き換えられません。これにより、データファイルごとに蓄積する削除ファイルの数を増やしてコストを削減できます。
使用できるプロパティ値 正数。50 未満にする必要があります。
デフォルト値 2

vacuum_min_snapshots_to_keep

説明

テーブルのメインブランチに保持するスナップショットの最小数。

この値は vacuum_max_snapshot_age_seconds プロパティよりも優先されます。残りの最小スナップショット数が vacuum_max_snapshot_age_seconds で指定した経過日数よりも古い場合、そのスナップショットは保持され、vacuum_max_snapshot_age_seconds の値は無視されます。

使用できるプロパティ値 正数。
デフォルト値 1

vacuum_max_snapshot_age_seconds

説明 メインブランチに保持するスナップショットの最大保存期間。vacuum_min_snapshots_to_keep で指定された残りの最小スナップショットが指定された経過日数よりも古い場合、この値は無視されます。
使用できるプロパティ値 正数。
デフォルト値 432,000 秒 (5 日間)

vacuum_max_metadata_files_to_keep

説明 テーブルのメインブランチに保持する以前のメタデータファイルの最大数。
使用できるプロパティ値 正数。
デフォルト値 100

CREATE TABLE ステートメントの例

次の例では、3 つの列を持つ Iceberg テーブルを作成します。

CREATE TABLE iceberg_table ( id int, data string, category string) PARTITIONED BY (category, bucket(16,id)) LOCATION 's3://DOC-EXAMPLE-BUCKET/iceberg-folder' TBLPROPERTIES ( 'table_type'='ICEBERG', 'format'='parquet', 'write_compression'='snappy', 'optimize_rewrite_delete_file_threshold'='10' )

CREATE TABLE AS SELECT (CTAS)

この CREATE TABLE AS ステートメントを使用して Iceberg テーブルを作成する詳細については、CTAS テーブルのプロパティ セクションに特に注目して「CREATE TABLE AS」を参照してください。

AWS Glue クローラーの使用

AWS Glue クローラーを使用して、Iceberg テーブルを に自動的に登録できます AWS Glue Data Catalog。別の Iceberg カタログから移行する場合は、 AWS Glue クローラーを作成してスケジュールし、Iceberg テーブルが配置されている Amazon S3 パスを指定できます。 AWS Glue  クローラーがトラバースできる Amazon S3 パスの最大の階層の深さを指定できます。 AWS Glue クローラーをスケジュールすると、クローラーはスキーマ情報を抽出し、実行されるたびにスキーマの変更 AWS Glue Data Catalog で を更新します。 AWS Glue クローラーは、スナップショット間のスキーママージをサポートし、 内の最新のメタデータファイルの場所を更新します AWS Glue Data Catalog。詳細については、「 のデータカタログとクローラー AWS Glue」を参照してください。