我有大量的日志文件,其中包含存储在Amazon S3中的JSON对象的行。这些文件使用LZO压缩。Amazon Athena相同的查询有时会失败,HIVE_CURSOR_ERROR
的格式是使用类似下面
s3://bucket/logs/year=2017/month=01/day=01/log00_00.txt.lzo
表定义为如下面
CREATE EXTERNAL TABLE IF NOT EXISTS logs (
attr1 string,
attr2 string,
attr3 string,
)
PARTITIONED BY (
year string,
month string,
day string
)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1'
) LOCATION 's3://bucket/logs/'
TBLPROPERTIES ('has_encrypted_data'='false');
蜂房分区当我试图一个月执行查询这样
SELECT COUNT(*) FROM logs WHERE year = '2017' AND month = '05';
的查询总是失败
HIVE_CURSOR_ERROR: org.codehaus.jackson.JsonParseException:
Unexpected character ('c' (code 99)): expected a valid value
(number, String, array, object, 'true', 'false' or 'null') at
[Source: [email protected]; line: 1, column: 2]
我试图在一天查询较小数量的数据,即像这样
SELECT COUNT(*) FROM logs WHERE year = '2017' AND month = '05' AND day = '01'
此查询有时失败,并像上述错误,虽然成功的概率是很高的。
因此,现在当我必须查询一个月时,我必须在本月的每一天进行迭代,然后重新运行失败日期的执行。
有什么我可以做的,以解决这个问题吗?或者这是来自AWS Athena的错误?