

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

# ストリーミングテーブルの Iceberg の動作
<a name="data-delivery-st-iceberg"></a>

 このトピックでは、タイプマッピング、フィールド処理、テーブルメンテナンス、形式仕様など、ストリーミングテーブルが AWS Glue スキーマレジストリスキーマから Apache Iceberg テーブルにデータをマッピングする方法について説明します。

## AWS Glue スキーマレジストリから Iceberg タイプへのマッピング
<a name="data-delivery-iceberg-type-mapping"></a>

 ストリーミングテーブルは、次のように JSON スキーマタイプを AWS Glue Schema Registry から Apache Iceberg タイプにマッピングします。


**スキーマレジストリから Iceberg タイプへのマッピング**  

| JSON スキーマタイプ | Iceberg の型 | 注意事項 | 
| --- | --- | --- | 
| string (プレーン) | string | デフォルトの文字列マッピング。 | 
| string 形式付き date-time | timestamptz | タイムゾーン付きのタイムスタンプ。 | 
| string 形式付き date | date | カレンダーの日付。 | 
| string 形式付き time | time | 時刻。 | 
| string 形式付き uuid | uuid | 汎用一意識別子。 | 
| string エンコーディングbyteまたは base64 | binary | base64 としてエンコードされたバイナリデータ。 | 
| integer (32 ビット以下) | int | maximum または exclusiveMaximum <= 2^31 の値。 | 
| integer (32 ビットより大きい) | long | 32 ビット範囲を超える値。 | 
| number に multipleOf を使用する | decimal | multipleOf から導出された精度を持つ固定小数点小数。 | 
| number (プレーン) | double | IEEE 754 倍精度浮動小数点。 | 
| boolean | boolean | true または false。 | 
| object 名前付きプロパティを持つ | struct | 名前付きフィールドは構造体フィールドにマッピングされます。 | 
| object に additionalProperties を使用する | map | 文字列キーを含むキーと値のマップ。 | 
| array | list | 要素の順序付けられたコレクション。 | 
| enum | string | 文字列として保存される列挙値。 | 

## 必要な列
<a name="data-delivery-iceberg-required-columns"></a>

 JSON Schema `required`配列にリストされているフィールドは、Iceberg テーブルで必須 (nullable ではない) 列になります。必須フィールドがレコードにない場合、レコードはデッドレターキューに送信されます。

## パーティションキー列
<a name="data-delivery-iceberg-partition-key"></a>

 テーブルには、時間単位の時間単位のパーティショニング (`TIME_HOUR`変換) に使用できる`timestamptz`列が含まれている必要があります。Schema Registry スキーマでは AWS Glue 、これは `date-time`形式の`string`フィールドで、Iceberg `timestamptz`タイプにマッピングされます。

 パーティションによって参照されるソース列は、スキーマの`required`配列に表示されるかどうかにかかわらず、自動的に必須としてマークされます。パーティションキーの値がないレコードは、デッドレターキューに送信されます。

 テーブルのパーティション列に基づいて、Amazon S3 Tables レコードの有効期限ジョブを有効にできます。詳細については、「[有効期限切れを記録する](#data-delivery-iceberg-record-expiration)」を参照してください。

## フィールド処理
<a name="data-delivery-iceberg-field-handling"></a>

 ストリーミングテーブルは、受信レコードと Iceberg テーブルスキーマの不一致を次のように処理します。
+ **追加フィールド** – レコードには存在するが、スキーマには定義されていないフィールドはドロップされ、Iceberg テーブルに書き込まれません。
+ **オプションフィールドがない** – レコードにないオプションフィールドは、Iceberg テーブル`null`の として書き込まれます。
+ **必須フィールドの欠落** – 必須フィールドがレコードにない場合、レコード全体がデッドレターキューに送信されます。

## ネスト制限
<a name="data-delivery-iceberg-nesting"></a>

 ストリーミングテーブルは、複合型 (構造体、マップ、リスト) の最大ネスト深度 16 レベルをサポートします。16 レベルのネストを超えるスキーマは、配信の作成時に拒否されます。

## マネージドテーブルのプロパティ
<a name="data-delivery-iceberg-table-properties"></a>

 ストリーミングテーブルは Iceberg テーブルのプロパティを自動的に管理します。これらのプロパティは、テーブルの作成時に設定され、外部で変更しないでください。ストリーミングテーブルは、これらのプロパティを使用して、書き込み動作、圧縮、メタデータ管理を制御します。

 テーブルは Amazon Kinesis Data Streams によって管理されるため、スキーマを更新したり、テーブルのプロパティを変更したり、データを直接書き込みまたは削除したりしないでください。 AWS 分析サービスと互換性のある Apache Iceberg クエリエンジンを使用してテーブルをクエリできます。マネージドテーブルバケットの詳細については、*Amazon S3 * [ユーザーガイド」の AWS 「マネージドテーブルバケットの使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-aws-managed-buckets.html)」を参照してください。

## S3 Tables のメンテナンス
<a name="data-delivery-iceberg-maintenance"></a>

 S3 Tables にバックアップされた Apache Iceberg のストリーミングテーブルに配信すると、次のメンテナンスオペレーションが自動的に処理されます。
+ **圧縮** — 小さなデータファイルは、クエリのパフォーマンスを向上させ、メタデータのオーバーヘッドを減らすために、定期的に大きなファイルに圧縮されます。
+ **スナップショットの有効期限** — 期限切れのスナップショットは、メタデータストレージを再利用し、テーブルメタデータサイズを減らすためにクリーンアップされます。
+ **参照されていないファイルのクリーンアップ** — スナップショットによって参照されなくなった孤立したデータファイルは、ストレージを再利用するために削除されます。

## 有効期限切れを記録する
<a name="data-delivery-iceberg-record-expiration"></a>

 Iceberg テーブルのレコードの有効期限を設定できます。有効にすると、Amazon S3 Tables は、テーブルの`timestamptz`パーティション列に基づいて、メンテナンスオペレーション中に指定された保持期間より古いレコードを自動的に削除します。詳細については、[Amazon S3ユーザーガイド」の「Amazon S3 Tables レコードの有効期限の管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-record-expiration.html)」を参照してください。 *Amazon S3 * 

## 形式仕様
<a name="data-delivery-iceberg-format"></a>

 ストリーミングテーブルでは、Iceberg テーブルに次の形式の仕様が使用されます。
+ **Iceberg 形式バージョン** – v2
+ **Iceberg 仕様バージョン** – 1.9.0
+ **ファイル形式** – Apache Parquet