[英]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.