翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Glue で JSON 形式を使用する
AWS Glue はソースからデータを取得し、さまざまなデータ形式で保存および転送されたターゲットにデータを書き込みます。このドキュメントでは、JSON データ形式で保存または転送されているデータを、AWS Glue で使用するために用意されている機能について説明します。
AWS Glue は、JSON 形式の使用をサポートしています。この形式は、行ベースまたは列ベースではなく、形状は一貫しているが内容は柔軟なデータ構造を表します。JSON は、複数の機関が発行する並列した規格で定義されており、そのうちの 1 つが ECMA-404 です。一般的に参照されるソースによる形式の概要については、「Introducing JSON
AWS Glue を使用して、JSON ファイルや bzip
および gzip
などの圧縮された JSON ファイルを Amazon S3 から 読み取ることができます。このページで説明する設定ではなく、S3 接続パラメータ 上で圧縮動作を設定します。
読み込み | 書き込み | ストリーミングの読み取り | 小さなファイルのグループ化 | ジョブのブックマーク |
---|---|---|---|---|
サポート | サポート対象 | サポート対象 | サポート対象 | サポート |
例: S3 から JSON ファイルまたはフォルダを読み取る
前提条件: 読み取る JSON ファイルまたはフォルダへの S3 パス (s3path
) が必要です。
設定: 関数オプションで format="json"
を指定します。connection_options
で、paths
キーを使用して s3path
を指定します。さらに、接続オプションで、読み取り操作がS3 を通過する方法を変更することができます。詳細については、「Amazon S3 接続のオプションのリファレンス」を参照してください。リーダーが JSON ファイルを解釈する方法は、format_options
で設定できます。詳細については、JSON 設定リファレンスを参照してください。
次の AWS Glue ETL スクリプトは、S3 から JSON ファイルまたはフォルダを読み取るプロセスを示しています。
例: JSON ファイルおよびフォルダを S3 に書き込む
前提条件: 初期化された DataFrame (dataFrame
) または DynamicFrame (dynamicFrame
) が必要です。また、予想される S3 出力パスである s3path
も必要になります。
設定: 関数オプションで format="json"
を指定します。connection_options
で、paths
キーを使用して s3path
を指定します。ライターが S3 と対話する方法を、connection_options
でさらに詳しく変更することができます。詳細については、AWS Glue: Amazon S3 接続のオプションのリファレンス の「ETL の入力および出力のデータ形式オプション」を参照してください。ライターが JSON ファイルを解釈する方法は、format_options
で設定できます。詳細については、JSON 設定リファレンスを参照してください。
次の AWS Glue ETL スクリプトは、S3 から JSON ファイルまたはフォルダを書き込むプロセスを示しています。
JSON 設定リファレンス
format="json"
には、以下の format_options
値を使用できます。
-
jsonPath
– レコードに読み込むオブジェクトを特定する JsonPath式。これは、ファイルが外部配列内にネストされたレコードを含む場合に役立ちます。たとえば、次の JsonPath 式のターゲットは、JSON オブジェクトの id
フィールドです。format="json", format_options={"jsonPath": "$.id"}
multiLine
— 単一のレコードが複数行にまたがることができるかどうかを指定するブール値。これが発生するのは、フィールドに引用符で囲まれた改行文字がある場合などです。複数行にまたがるレコードがある場合は、このオプションを"true"
に設定する必要があります。デフォルト値は"false"
であり、解析時によりアグレッシブなファイル分割を可能にします。-
optimizePerformance
– 高度な SIMD JSON リーダーで、Apache Arrow ベースの列指向メモリ形式を使用するかどうかを指定するブール値。これは、AWS Glue 3.0 でのみ使用できます。multiLine
またはjsonPath
と互換性がありません。これらのオプションのいずれかを指定すると、AWS Glue は標準のリーダーにフォールバックするように指示されます。 -
withSchema
— 「XML スキーマを手動で指定する」で説明されている形式でテーブルスキーマを指定する文字列の値。非カタログ接続から読み取る場合にのみ、optimizePerformance
で使用されます。
Apache Arrow 列指向形式によりベクトル化された SIMD JSON リーダーの使用
AWS Glue バージョン 3.0 では、JSON データ用のベクター化されたリーダーが追加されています。特定の条件下では、標準のリーダーと比較して 2 倍高速に動作します。このリーダーには、このセクションに記載されているように、ユーザーが使用前に知っておく必要のある特定の制限があります。
最適化されたリーダーを使用するには、format_options
またはテーブルプロパティで "optimizePerformance"
を True に設定します。カタログを読み取らない限り、withSchema
を指定する必要もあります。withSchema
は、「XML スキーマを手動で指定する」で説明されている入力を期待します
// Read from S3 data source glueContext.create_dynamic_frame.from_options( connection_type = "s3", connection_options = {"paths": ["s3://
s3path
"]}, format = "json", format_options={ "optimizePerformance": True, "withSchema":SchemaString
}) // Read from catalog table glueContext.create_dynamic_frame.from_catalog( database = database, table_name = table, additional_options = { // The vectorized reader for JSON can read your schema from a catalog table property. "optimizePerformance": True, })
AWS Glue ライブラリで SchemaString
を構築する方法の詳細については、「PySpark 拡張子型」を参照してください。
ベクトル化された CSV リーダーでの制限事項
以下の制限事項に留意してください。
ネストされたオブジェクトまたは配列値を持つ JSON 要素はサポートされていません。指定されている場合、AWS Glue は標準のリーダーにフォールバックします。
カタログから、または
withSchema
で、スキーマを指定する必要があります。multiLine
またはjsonPath
と互換性がありません。これらのオプションのいずれかを指定すると、AWS Glue は標準のリーダーにフォールバックするように指示されます。入力スキーマと一致しない入力レコードを指定すると、リーダーは失敗します。
エラーレコードは作成されません。
マルチバイト文字 (日本語や中国語の文字など) を含む JSON ファイルはサポートされていません。