无法使用 AWS Athena 加载简单 Json 文件
Cannot load simple Json file with AWS Athena
我有一个简单的 JSON 文件:
{'oldname':'mau'}
在 AWS Athena 中,我希望读取此文件并创建匹配的 table 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;
并得到一个错误:
Query bceb274d-309f-40d5-a893-570de5f4ca4e failed with error code HIVE_CURSOR_ERROR: Row is not a valid JSON Object - JSONException: Missing value at 1 [character 2 line 1]
我哪里出错了?
我让它工作了,所以回答我自己的问题,问题出在 JSON 文件的格式上。
似乎 AWS Athena(以及 org.openx.data.jsonserde.JsonSerDe)相当挑剔 re: 它读取的 JSON 文件的格式。
每个 JSON 记录必须完全在 1 行文本中,键和值之间没有空格。
在Python中,我生成了JSON条记录如下:
import json
dStatsRecord = {} # a valid json dict
with open('myfile.json', 'r') as oFile:
json.dump(dStatsRecord, oFile, separators=(',', ':'))
我有一个简单的 JSON 文件:
{'oldname':'mau'}
在 AWS Athena 中,我希望读取此文件并创建匹配的 table 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;
并得到一个错误:
Query bceb274d-309f-40d5-a893-570de5f4ca4e failed with error code HIVE_CURSOR_ERROR: Row is not a valid JSON Object - JSONException: Missing value at 1 [character 2 line 1]
我哪里出错了?
我让它工作了,所以回答我自己的问题,问题出在 JSON 文件的格式上。 似乎 AWS Athena(以及 org.openx.data.jsonserde.JsonSerDe)相当挑剔 re: 它读取的 JSON 文件的格式。
每个 JSON 记录必须完全在 1 行文本中,键和值之间没有空格。
在Python中,我生成了JSON条记录如下:
import json
dStatsRecord = {} # a valid json dict
with open('myfile.json', 'r') as oFile:
json.dump(dStatsRecord, oFile, separators=(',', ':'))