跳至內容

如何使用 AWS Glue 處理 JSON 檔案?

1 分的閱讀內容
0

我想在 AWS Glue ETL 工作中處理 JSON 檔案。

解決方法

將 JSON 檔案轉換為其他格式

若要將 JSON 檔案轉換為其他格式,請使用 Visual ETL 建立 AWS Glue ETL 工作。對於 Data source (資料來源),選擇 JSON。對於 Data target (資料目標),選擇新的檔案格式。在 Data source (資料來源) 和 Data target (資料目標) 的 Node type (節點類型) 選擇 S3

建立 JSON 分類器來讀取巢狀 JSON 資料

如果您的 AWS Glue 編目程式必須讀取巢狀欄,請建立定義為 JSON 分類器自訂分類器。然後,建立新的 AWS Glue 編目程式。將自訂 JSON 分類器新增至新的 AWS Glue 編目程式分類器清單中。

使用關聯將巢狀 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 資料來源中的記錄數不相符,則資料包含格式錯誤的記錄。執行以下 errorAsDynamicFrame 命令,以尋找資料集中格式錯誤的記錄:

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

設定多行值以讀取包含多行的 JSON 記錄

如果您的 JSON 記錄跨越多行,請將 AWS Glue ETL 工作組態的格式選項中的多行值設為 True。依預設,多行值設定為 False

AWS 官方已更新 1 年前