View a markdown version of this page

Apache Iceberg へのテーブルストリーミング用のデータ配信 - Amazon Managed Streaming for Apache Kafka

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

Apache Iceberg へのテーブルストリーミング用のデータ配信

Amazon MSK データ配信を使用すると、Apache Kafka トピックを Amazon S3 Tables の Apache Iceberg テーブルとして継続的にマテリアライズできます。インテリジェントなインライン圧縮により、小さなファイルのパフォーマンスへの影響がなくなり、データの鮮度を犠牲にすることなくクエリのパフォーマンスを予測できます。組み込みの調整により、高スループットコンシューマー間での同時ライターの競合が解決されます。Amazon S3 Tables は、圧縮、スナップショットの有効期限、参照されていないファイルのクリーンアップなど、継続的なテーブルメンテナンスを自動的に処理します。

統合

  • Amazon MSK Express ブローカー — データソース。

  • Amazon S3 Tables — マネージド Iceberg 送信先。

  • AWS Glue Schema Registry — レコードスキーマの信頼できるソース。

  • Amazon CloudWatch — メトリクスと運用ログ。

  • AWS CloudTrail — API 監査ログ記録。

  • AWS KMS — オプションのカスタマー管理の保管時の暗号化。

一般的なユースケース

  • Kafka ストリーミングデータをクエリ可能な Iceberg テーブルに継続的に配置して分析します (Athena、Spark、その他のエンジン)。

  • 圧縮や配信サービスを管理せずに、S3 Tables にストリーミングレイクハウスを構築します。

  • ブローカーロードを追加せずに、1 つのトピックを複数の送信先にファンアウトします。

API の仕様については、Amazon MSK API リファレンスCreateChannelDescribeChannel「」、UpdateChannel「」、DeleteChannel「」、「」、「」、ListChannels「」を参照してください。

データフロー

次の図は、レコードが Amazon MSK Express ブローカートピックからデータ配信チャネルを経由して送信先に流れ、処理不可能なレコードがデッドレターキューにルーティングされる様子を示しています。

データ配信チャネルを介した Amazon MSK Express ブローカートピックから Amazon S3 Tables の Apache Iceberg テーブルへのデータフロー。処理不可能なレコードはデッドレターキューにルーティングされます。

利点

  • 管理するインフラストラクチャがない — コネクタやコンピューティングクラスターがない。チャネルを設定すると、サービスは配信、スケーリング、耐障害性を処理します。

  • ブローカーへの影響なし — チャネルは、ブローカーのスループットを消費したり、プロデューサーとコンシューマーのワークロードに影響を与えたりすることなく、トピックから読み取ります。

  • データによるスケーリング — 最大 10 GBps のデータ配信スループットをサポートし、手動スケーリングは必要ありません。

  • 数分でのデータ鮮度 — 配信されたデータは、トピックに対して生成されてから 5~15 分以内にクエリまたは処理できます。

  • 組み込みエラー処理 — 未処理のレコードはエラーコンテキストを使用してデッドレターキューにルーティングされるため、配信は中断されません。

仕組み

Iceberg でテーブルを確立するには、チャネルを作成します。Express ブローカーを使用する Amazon MSK プロビジョンドクラスターにチャネルを作成します。チャネルは Kafka トピックからレコードを読み取り、設定された送信先に配信します。

Apache Iceberg のストリーミングテーブルの場合、チャネルは Glue スキーマレジストリのスキーマを使用して JSON AWS レコードを変換し、それらを Apache Parquet データファイルとして書き込み、S3 Table バケットに保存されている新しい Iceberg テーブルに登録します。

処理できないレコードは、必要なデッドレターキュー (DLQ) S3 バケットにルーティングされます。

注記

チャネルは以前に生成されたデータをバックフィルしません。有効化が配信された後に生成されたデータのみ。Apache Iceberg のストリーミングテーブルの場合、チャネルは設定ごとに新しい Iceberg テーブルを作成します。既存の Iceberg テーブルへの配信はサポートされていません。

要件とサポートされている設定

  • Express ブローカーを使用する Amazon MSK プロビジョンドクラスター。標準ブローカーと Amazon MSK Serverless はサポートされていません。

  • 少なくとも 1 つの Kafka トピック。

  • デッドレターキュー (DLQ) の Amazon S3 バケット。これは必須です。

  • チャネルがデータを配信するために引き受ける IAM サービスロール。

  • データ鮮度は 5~15 分の間で設定されます。

  • JSON (プレーン JSON、GSR スキーマ ARN 付き) または JSON_SCHEMA_GSR (スキーマ ID が埋め込まれた GSR シリアル化された JSON) のトピックデータ。

  • トピックデータに一致する Glue Schema Registry AWS に登録されたスキーマ。

  • Amazon MSK クラスターと同じ の Amazon S3 Table バケット。 AWS リージョン

  • 最小 5 分間のデータ鮮度では、トピックは少なくとも 2.4 MBps の非圧縮データを生成する必要があります。スループットの低いトピックでは、より高いデータ鮮度値 (最大 15 分) を使用します。