AWS Athena 查询混合 JSON 个对象,其中一些对象已移至 Glacier

AWS Athena querying mixed JSON objects that have some moved to Glacier

我有一个 Athena table 指向一个 JSON 对象的列表,类似于:

CREATE EXTERNAL TABLE `example_table` (
`foo` struct<
  `bar`: string>
)
ROW FORMAT SERDE 
  'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
  'ignore.malformed.json' = 'true'
)
LOCATION 
  's3://bucket/json';

此存储桶具有生命周期策略,因此特定年龄的文件会转到 Glacier。我想查询其他文件,但是看到如下错误:

Your query has the following error(s):

HIVE_CURSOR_ERROR: com.amazonaws.services.s3.model.AmazonS3Exception: 
The operation is not valid for the object's storage class (
   Service: Amazon S3; 
   Status Code: 403; 
   Error Code: InvalidObjectState;

AWS 声称根据此更新(2/2019)忽略 Glacier 对象:https://docs.aws.amazon.com/athena/latest/ug/release-note-2019-02-18.html

我没有被拒绝访问,而是 InvalidObjectState。如何创建 table 来查询这些 JSON 文件?

您的对象是 Glacier 还是 Glacier Deep Archive。 DEEP_ARCHIVE 的存储 class 似乎没有被忽略。

您是否可以构造您的密钥以使用日期时间格式,即 2020/05/14/blob.json。如果你能做到这一点,那么你就可以对你的数据进行分区,这将阻止你使用已被生命周期规则修改的数据。

其他网址