我有一个简单的json文件:
{'oldname':'mau'}
在AWS Athena中,我想阅读此文件,然后创建匹配的表T
CREATE EXTERNAL TABLE IF NOT EXISTS stats_json.t (
`oldname` string
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1'
) LOCATION 's3://mybucket/stats/';
然后我尝试查询:
select * from t limit 10;
获取错误:
查询BCEB274D-309F-40D5-A893-570DE5F4CA4E失败,错误代码
我在哪里出错?
我让它起作用,因此要回答我自己的问题,问题是json文件的格式。看来AWS ATHENA(well org.openx.data.jsonserde.jsonserde)相当挑剔。
每个JSON记录必须完全在1行文本上,而键和值之间没有空格。
在Python中,我生成了JSON记录,如下所示:
import json
dStatsRecord = {} # a valid json dict
with open('myfile.json', 'r') as oFile:
json.dump(dStatsRecord, oFile, separators=(',', ':'))