AWS Glue を使用して JSON ファイルを処理する方法を教えてください。

所要時間1分
0

AWS Glue の ETL ジョブで JSON ファイルを処理したいです。

解決策

JSON ファイルを別の形式に変換する

JSON ファイルを別の形式に変換するには、Visual ETL を使用して AWS Glue ETL ジョブを作成します。[データソース][JSON] を選択します。[データターゲット] で新しいファイル形式を選択します。[データソース][データターゲット] で、[ノードの種類][S3] を選択します。

ネストされた JSON データを読み取る JSON 分類子を作成する

AWS Glue クローラーがネストされた列を読み取る必要がある場合は、JSON 分類子で定義されたカスタム分類子を作成します。次に、新しいAWS Glue クローラーを作成します。カスタム JSON 分類子を新しい AWS Glue クローラーの分類子リストに追加します。

Relationalize 処理を使用してネストされた JSON 列を、お使いの AWS Glue ETL ジョブ内の列に変換します。AWS Glue ETL ジョブ設定のフォーマットオプション値で jsonPath オプションを使用しても対応できます。コード例については、「例: Amazon Simple Storage Service (Amazon S3)から JSON ファイルまたはフォルダを読み取る」を参照してください。

unnest オプションを使用すると、ネストされたフィールドをトップレベルオブジェクトに変換できます。

AWS Glue クローラーを使用して JSON 配列を解釈する

デフォルトでは、AWS Glue クローラーはデータを単一の配列として扱います。JSON 配列の各レコードに基づくスキーマを作成するには、JSON カスタム分類子を作成します。[JSON パス]$[*] と入力します。

AWS Glue ETL ジョブを使用して JSON 配列を読み取る際、Apache Spark の explode 関数を使用して配列を行に変換します。詳細については、Spark のウェブサイトで「pyspark.sql.functions.explode」を参照してください。

Spark の to_json 関数を使用しても配列を文字列に変換できます。詳細については、Spark のウェブサイトで「pyspark.sql.functions.to_json」を参照してください。

DynamicFrame のカウントがデータソースのレコード数と一致しない場合のトラブルシューティング

DynamicFrame のカウントが JSON データソース内のレコード数と一致しない場合、データには不正な形式のレコードが含まれています。次の ErrorSasDynamicFrame コマンドを実行し、データセット内の形式が不正であるレコードを特定します。

# View error fields and error data  
error_record = dynamicframe_df.errorsAsDynamicFrame().toDF().head()

multiline 値を設定し、複数行を含む JSON レコードを読み取る

JSON レコードが複数行にまたがる場合は、AWS Glue ETL ジョブ設定のフォーマットオプションで、multiline の値を true に設定します。デフォルトでは、multiline 値は false に設定されています。

AWS公式
AWS公式更新しました 2ヶ月前
コメントはありません

関連するコンテンツ