View a markdown version of this page

ストリーミングテーブルの Iceberg の動作 - Amazon Kinesis Data Streams

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

ストリーミングテーブルの Iceberg の動作

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

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

ストリーミングテーブルは、次のように 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 文字列として保存される列挙値。

必要な列

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