翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ストリーミングテーブルの Iceberg の動作
このトピックでは、タイプマッピング、フィールド処理、テーブルメンテナンス、形式仕様など、ストリーミングテーブルが AWS Glue スキーマレジストリスキーマから Apache Iceberg テーブルにデータをマッピングする方法について説明します。
AWS Glue スキーマレジストリから Iceberg タイプへのマッピング
ストリーミングテーブルは、次のように JSON スキーマタイプを AWS Glue Schema Registry から Apache 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 |
文字列として保存される列挙値。 |
必要な列
JSON Schema required配列にリストされているフィールドは、Iceberg テーブルで必須 (nullable ではない) 列になります。必須フィールドがレコードにない場合、レコードはデッドレターキューに送信されます。
パーティションキー列
テーブルには、時間単位の時間単位のパーティショニング (TIME_HOUR変換) に使用できるtimestamptz列が含まれている必要があります。Schema Registry スキーマでは AWS Glue 、これは date-time形式のstringフィールドで、Iceberg timestamptzタイプにマッピングされます。
パーティションによって参照されるソース列は、スキーマのrequired配列に表示されるかどうかにかかわらず、自動的に必須としてマークされます。パーティションキーの値がないレコードは、デッドレターキューに送信されます。
テーブルのパーティション列に基づいて、Amazon S3 Tables レコードの有効期限ジョブを有効にできます。詳細については、「有効期限切れを記録する」を参照してください。
フィールド処理
ストリーミングテーブルは、受信レコードと Iceberg テーブルスキーマの不一致を次のように処理します。
-
追加フィールド – レコードには存在するが、スキーマには定義されていないフィールドはドロップされ、Iceberg テーブルに書き込まれません。
-
オプションフィールドがない – レコードにないオプションフィールドは、Iceberg テーブル
nullの として書き込まれます。 -
必須フィールドの欠落 – 必須フィールドがレコードにない場合、レコード全体がデッドレターキューに送信されます。
ネスト制限
ストリーミングテーブルは、複合型 (構造体、マップ、リスト) の最大ネスト深度 16 レベルをサポートします。16 レベルのネストを超えるスキーマは、配信の作成時に拒否されます。
マネージドテーブルのプロパティ
ストリーミングテーブルは Iceberg テーブルのプロパティを自動的に管理します。これらのプロパティは、テーブルの作成時に設定され、外部で変更しないでください。ストリーミングテーブルは、これらのプロパティを使用して、書き込み動作、圧縮、メタデータ管理を制御します。
テーブルは Amazon Kinesis Data Streams によって管理されるため、スキーマを更新したり、テーブルのプロパティを変更したり、データを直接書き込みまたは削除したりしないでください。 AWS 分析サービスと互換性のある Apache Iceberg クエリエンジンを使用してテーブルをクエリできます。マネージドテーブルバケットの詳細については、Amazon S3 ユーザーガイド」の AWS 「マネージドテーブルバケットの使用」を参照してください。
S3 Tables のメンテナンス
S3 Tables にバックアップされた Apache Iceberg のストリーミングテーブルに配信すると、次のメンテナンスオペレーションが自動的に処理されます。
-
圧縮 — 小さなデータファイルは、クエリのパフォーマンスを向上させ、メタデータのオーバーヘッドを減らすために、定期的に大きなファイルに圧縮されます。
-
スナップショットの有効期限 — 期限切れのスナップショットは、メタデータストレージを再利用し、テーブルメタデータサイズを減らすためにクリーンアップされます。
-
参照されていないファイルのクリーンアップ — スナップショットによって参照されなくなった孤立したデータファイルは、ストレージを再利用するために削除されます。
有効期限切れを記録する
Iceberg テーブルのレコードの有効期限を設定できます。有効にすると、Amazon S3 Tables は、テーブルのtimestamptzパーティション列に基づいて、メンテナンスオペレーション中に指定された保持期間より古いレコードを自動的に削除します。詳細については、Amazon S3ユーザーガイド」の「Amazon S3 Tables レコードの有効期限の管理」を参照してください。 Amazon S3
形式仕様
ストリーミングテーブルでは、Iceberg テーブルに次の形式の仕様が使用されます。
-
Iceberg 形式バージョン – v2
-
Iceberg 仕様バージョン – 1.9.0
-
ファイル形式 – Apache Parquet