iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0
Software Development

使用 Serverless 架構設計廣告點擊系統 系列 第 12 篇

Day 12: 用 AWS Glue Python Shell Job 把 S3 上的 JSON 檔轉成 Parquet 檔(上)

  • 分享至 

  • xImage
  •  

許多團隊在 AWS 上累積資料時,常見的起手式是:先把 JSON 格式的資料寫到 S3。這樣寫入在一開始很方便,但當你開始想要:

  • 統一 schema(欄位型別一致)
  • 提升查詢效能(避免一次掃描所有 JSON + parse 成本)
  • 把資料 migrat 到其他不同類型的資料庫
    就會發現「S3 + JSON」需要再進一步整理成方便查詢和遷移的格式。

為什麼不是直接用 Athena 統一 S3 JSON schema ?

當然透過 Athena 直接把 JSON 對應到 Table 裡面的各個欄位比較快速,但如果 JSON 檔案是 pretty-printed 多行格式

{
  "ad_id": "ad_1",
  "click_id": "001d1a51-..."
}

而不是單行格式

{"ad_id": "ad_1", "click_id": "001d1a51-..."}

Athena 預設使用 org.openx.data.jsonserde.JsonSerDe 解析 JSON, JsonSerDe 對多行 JSON 的支援不穩定,會有部分欄位解析失敗或回傳 NULL 的情形,搜尋的時候會出現 Unexpected end-of-input: expected close marker for OBJECT 的錯誤。


上一篇
Day 11: 批次寫入資料 - DynamoDB
下一篇
Day 13: 用 AWS Glue Python Shell Job 把 S3 上的 JSON 檔轉成 Parquet 檔(中)
系列文
使用 Serverless 架構設計廣告點擊系統 共 16 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言