簡體   English   中英

如何使用對象數組從 json 創建 AWS Glue DynamicFrame

[英]How to create AWS Glue DynamicFrame from json with array of objects

我在 S3 中有 json 個文件,每個文件中包含對象數組,如下所示。

[{
    "id": "c147162a-a304-11ea-aa90-0242ac110028",
    "clientId": "xxx",
    "contextUUID": "1bb6b39e-b181-4a6d-b43b-4040f9d254b8",
    "tags": {},
    "timestamp": 1592855898
}, {
    "id": "c147162a-a304-11ea-aa90-0242ac110028",
    "clientId": "yyy",
    "contextUUID": "1bb6b39e-b181-4a6d-b43b-4040f9d254b8",
    "tags": {},
    "timestamp": 1592855898
}]

我使用爬蟲來檢測模式並將其加載到目錄中。 它是成功的,它創建了一個模式,其中包含一個名為array的列,數據類型為array<struct<id:string,clientId:string,contextUUID:string,tags:string,timestamp:int>>

現在,我嘗試使用glueContext.create_dynamic_frame.from_catalog function 加載數據,但我看不到任何數據。 我嘗試打印架構和數據,如下所示。

ds = glueContext.create_dynamic_frame.from_catalog(
       database = "dbname",
       table_name = "tablename")

ds.printSchema()
root
ds.schema()
StructType([], {})
ds.show()
empty
ds.toDF().show()
++
||
++
++

任何想法,我做錯了什么? 我計划提取數組中的每個 object 並將 object 轉換為不同的架構。

您可以嘗試在 format_options 中提供正則表達式來告訴膠水它應該如何讀取數據。 以下代碼對我有用:

glueContext.create_dynamic_frame_from_options('s3', 
    {
        'paths': ["s3://glue-test-bucket-12345/events/101-1.json"]
    },
    format="json", 
    format_options={"jsonPath": "$[*]"}
    ).toDF()

我希望它能解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM