許多團隊在 AWS 上累積資料時,常見的起手式是:先把 JSON 格式的資料寫到 S3。這樣寫入在一開始很方便,但當你開始想要:
當然透過 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 的錯誤。