问题描述
我正在尝试使用 Athena 对我们的一个 S3 存储桶进行一些分析,但遇到了一些我无法解释的错误,也无法找到适合我查找的任何地方的解决方案。
我遵循的指南是https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-inventory-athena-query.html。
我昨天创建了我的 S3 清单,现在已经收到了 S3 中的第一份报告。格式为 Apache ORC
,最后一次导出显示为昨天,存储的附加字段为 Size
、Last modified
、Storage class
、Encryption
。
我可以看到存储在 s3://{my-inventory-bucket}/{my-bucket}/{my-inventory}
下的数据,所以我知道那里有数据。
库存存储桶和库存配置的默认加密都启用了 SSE-S3
加密。
要创建表,我使用以下查询:
CREATE EXTERNAL TABLE my_table (
`bucket` string,key string,version_id string,is_latest boolean,is_delete_marker boolean,size bigint
)
PARTITIONED BY (dt string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeytextoutputFormat'
LOCATION 's3://{my-inventory-bucket}/{my-bucket}/{my-inventory}/hive/';
创建表后,我使用以下方法加载数据:
MSCK REPAIR TABLE my_table;
加载数据结果显示数据已加载:
Partitions not in metastore: my_table=2021-07-17-00-00
Repair: Added partition to metastore my_table=2021-07-17-00-00
加载后,我使用以下方法验证数据是否可用:
SELECT disTINCT dt FROM my_table ORDER BY 1 DESC limit 10;
输出:
1 2021-07-17-00-00
现在,如果我运行类似下面的程序,一切都运行良好,我得到了预期的结果:
SELECT key FROM my_table ORDER BY 1 DESC limit 10;
SELECT key,size FROM my_table ORDER BY 1 DESC limit 10;
Your query has the following error(s):
HIVE_CURSOR_ERROR: Failed to read ORC file: s3://{my-inventory-bucket}/{my-bucket}/{my-inventory}/data/{UUID}.orc
This query ran against the "my_table" database,unless qualified by the query. Please post the error message on our forum or contact customer support with Query Id: {UUID}.
我觉得我的尺寸列有问题。谁能帮忙解决这个问题?
解决方法
好郁闷。我想我在这里找到了答案:https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-inventory.html
IsLatest – Set to True if the object is the current version of the object. (This field is not included if the list is only for the current version of objects.)
删除该列解决了问题。