Amazon S3 の Apache Iceberg テーブルへの Amazon Data Firehose ストリームの配信はプレビュー中であり、変更される可能性があります。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Data Firehose を使用して Apache Iceberg テーブルにデータを配信する
注記
Amazon S3 の Apache Iceberg テーブルへの Firehose ストリームの配信はプレビュー中です。この機能は本番ワークロードには使用しないでください。
Apache Iceberg は、ビッグデータ分析を実行するための高性能なオープンソーステーブル形式です。Apache Iceberg はAmazon S3 データレイクにSQLテーブルの信頼性とシンプルさを提供し、Spark、Flink、Trino、Hive、Impala などのオープンソースの分析エンジンが同じデータを同時に操作できるようにします。Apache Iceberg の詳細については、「」を参照してくださいhttps://iceberg.apache.org/
Firehose を使用して、ストリーミングデータを Amazon S3 の Apache Iceberg テーブルに直接配信できます。この機能を使用すると、1 つのストリームから異なる Apache Iceberg テーブルにレコードをルーティングし、Apache Iceberg テーブルのレコードに挿入、更新、削除オペレーションを自動的に適用できます。この機能を使用するには、 を使用する必要があります AWS Glue Data Catalog。
サポートされているリージョンとデータ型
Apache Iceberg Tables は、プレビュー AWS リージョン 用に米国東部 (バージニア北部)、米国西部 (オレゴン)、欧州 (アイルランド)、アジアパシフィック (東京)、カナダ (中部)、アジアパシフィック (シドニー) で利用できます。
Firehose は、Apache Iceberg がサポートするすべてのプリミティブおよび複雑なデータ型をサポートしています。詳細については、「スキーマとデータ型
考慮事項と制限事項
Firehose によるプレビュー用の Apache Iceberg テーブルのサポートには、以下の考慮事項と制限事項があります。
スループット – Direct PUT をソースとして使用して Apache Iceberg テーブルにデータを配信する場合、ストリームあたりの最大スループットは、米国東部 (バージニア北部)、米国西部 (オレゴン)、欧州 (アイルランド) の各リージョンでは 5 MiB/秒、アジアパシフィック (東京)、カナダ (中部)、アジアパシフィック (シドニー) の各リージョンでは 1 MiB/秒です。更新や削除なしで Iceberg テーブルにデータを挿入し、ストリームのスループットを高めてテストする場合は、Firehose 制限フォーム
を使用してスループット制限の引き上げをリクエストできます。 列 – 列名と値の場合、Firehose はマルチレベルネストされた の最初のレベルのノードのみを取得しますJSON。例えば、Firehose は位置フィールドを含む最初のレベルで使用可能なノードを選択します。ソースデータの列名とデータ型は、Firehose が正常に配信するためにターゲットテーブルのものと一致する必要があります。この場合、Firehose は、Iceberg テーブルに struct データ型列または map データ型列が位置フィールドと一致することを想定しています。Firehose は 16 レベルのネストをサポートしています。ネストされた の例を次に示しますJSON。
{ "version":"2016-04-01", "deviceId":"<solution_unique_device_id>", "sensorId":"<device_sensor_id>", "timestamp":"2024-01-11T20:42:45.000Z", "value":"<actual_value>", "position":{ "x":143.595901, "y":476.399628, "z":0.24234876 } }
列名またはデータ型が一致しない場合、Firehose はエラーをスローし、S3 エラーバケットにデータを配信します。Apache Iceberg テーブルですべての列名とデータ型が一致しても、ソースレコードに追加の新しいフィールドが存在する場合、Firehose は新しいフィールドをスキップします。
レコードごとに 1 つのJSONオブジェクト – 1 つの Firehose レコードで送信できるJSONオブジェクトは 1 つだけです。レコード内で複数のJSONオブジェクトを集約して送信すると、Firehose はエラーをスローし、S3 エラーバケットにデータを配信します。
ストリーミングソース – Firehose は現在、Apache Iceberg テーブルのソースとして Amazon Managed Streaming for Apache Kafka をサポートしていません。
-
Apache Iceberg 分離レベル – Firehose は Apache Iceberg テーブルへのべき等書き込みを行います。現在、シリアル化可能およびスナップショット分離レベル
はサポートされていません。 -
圧縮 — Firehose を使用して書き込むたびに、データファイルが生成されます。何千もの小さなデータファイルがあると、メタデータのオーバーヘッドが増加し、読み取りパフォーマンスに影響します。最適なクエリパフォーマンスを得るには、小さなデータファイルを定期的に取得し、より大きなデータファイルに書き換えるソリューションを検討することをお勧めします。このプロセスは compaction と呼ばれます。 は、Apache Iceberg テーブルの自動圧縮 AWS Glue Data Catalog をサポートします。詳細については、 Glue ユーザーガイドの「圧縮管理」を参照してください。 AWS 詳細については、「Apache Iceberg テーブルの自動圧縮
」を参照してください。また、Apache Iceberg テーブルのテーブルメンテナンスを実行する VACUUMステートメントを使用してストレージの消費量を減らすことで、Iceberg テーブルを最適化することもできます。