Amazon S3 の Apache Iceberg テーブルへの Amazon Data Firehose ストリームの配信はプレビュー中であり、変更される可能性があります。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Data Firehose で入力データ形式を変換する
Amazon Data Firehose は、データを Amazon S3 に保存する前にJSON、入力データの形式を から Apache Parquet または Apache ORC
レコードを Amazon Data Firehose に送信する前に集約した場合でも、データの形式を変換できます。
Amazon Data Firehose では、レコードデータの形式を変換するために次の 3 つの要素が必要です。
Deserializer
Amazon Data Firehose では、入力データの JSONを読み取るためにデシリアライザーが必要です。次の 2 種類のデシリアライザのいずれかを選択できます。
複数のJSONドキュメントを同じレコードに結合する場合は、入力が引き続きサポートされているJSON形式で表示されることを確認してください。JSON ドキュメントの配列は有効な入力ではありません。
たとえば、これは正しい入力です: {"a":1}{"a":2}
これが間違った入力です。 [{"a":1}, {"a":2}]
入力に次の形式のタイムスタンプJSONが含まれているJSON場合は、OpenX SerDe
-
yyyy-MM-dd'T'HH:mm:ss[.S]'Z'。小数は最大 9 桁まで使用できます – 例:
2017-02-07T15:13:01.39256Z
。 -
yyyy-[M]M-[d]d HH:mm:ss[.S]。小数は最大 9 桁まで使用できます – 例:
2017-02-07 15:13:01.14
。 -
エポック秒 – たとえば、
1518033528
です。 -
エポックミリ秒 – たとえば、
1518033528123
です。 -
浮動小数点エポック秒 – たとえば、
1518033528.123
です。
OpenX JSON SerDe はピリオド (.
) をアンダースコア () に変換できます_
。また、JSONキーを逆シリアル化する前に小文字に変換することもできます。Amazon Data Firehose を介してこのデシリアライザーで使用できるオプションの詳細については、「OpenXJsonSerDe」を参照してください。
どのデシリアライザーを選択するかわからない場合は、サポートされていないタイムスタンプがない限りJSON SerDe、OpenX を使用します。
前述の形式以外の形式のタイムスタンプがある場合は、Apache Hive JSON SerDeDateTimeFormat
形式の文字列のパターン構文に従います。詳細については、「クラス DateTimeFormat
特殊な値 millis
を使用して、エポックミリ秒でタイムスタンプを解析することもできます。形式を指定しない場合、Amazon Data Firehose はjava.sql.Timestamp::valueOf
デフォルトで を使用します。
Hive では、以下は許可JSON SerDe されません。
-
列名のピリオド (
.
)。 -
タイプが
uniontype
のフィールド。 -
スキーマに数値型があるが、 の文字列であるフィールドJSON。例えば、スキーマが (int) で、 JSONが の場合
{"a":"123"}
、Hive はエラー SerDe を返します。
Hive SerDe はネストされた JSONを文字列に変換しません。たとえば、{"a":{"inner":1}}
がある場合、{"inner":1}
は文字列として扱われません。
Schema
Amazon Data Firehose では、そのデータの解釈方法を決定するスキーマが必要です。 を使用します。AWS でスキーマを作成するための Glue AWS Glue Data Catalog。 次に、Amazon Data Firehose はそのスキーマを参照し、それを使用して入力データを解釈します。同じスキーマを使用して、Amazon Data Firehose と分析ソフトウェアの両方を設定できます。詳細については、「 の入力」を参照してください。 AWS の Glue データカタログ AWS Glue デベロッパーガイド
注記
で作成されたスキーマ AWS Glue Data Catalog は入力データ構造と一致する必要があります。一致していないと、変換されたデータに、スキーマで指定されていない属性が含まれなくなります。ネストされた を使用する場合はJSON、JSONデータの構造をミラーリングする STRUCTタイプをスキーマで使用します。STRUCT タイプJSONでネストされた を処理する方法については、この例を参照してください。
重要
サイズ制限を指定しないデータ型の場合、1 行のすべてのデータMBsには 32 という実用的な制限があります。
CHAR
または の長さを指定するとVARCHAR
、Firehose は入力データを読み取るときに、指定された長さの文字列を切り捨てます。基になるデータ文字列が長い場合、変更されません。
Serializer
Firehose では、データをターゲット列指向ストレージ形式 (Parquet または ORC) に変換するためにシリアライザーが必要です。次の 2 種類のシリアライザーのいずれかを選択できます。
選択するシリアライザーは、ビジネスニーズに応じて異なります。2 つのシリアライザオプションの詳細については、ORC SerDe