微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Athena 查询 S3 清单时出现 HIVE_CURSOR_ERROR - 大小列是否正确?

如何解决使用 Athena 查询 S3 清单时出现 HIVE_CURSOR_ERROR - 大小列是否正确?

我正在尝试使用 Athena 对我们的一个 S3 存储桶进行一些分析,但遇到了一些我无法解释的错误,也无法找到适合我查找的任何地方的解决方案。

我遵循的指南是https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-inventory-athena-query.html

我昨天创建了我的 S3 清单,现在已经收到了 S3 中的第一份报告。格式为 Apache ORC,最后一次导出显示为昨天,存储的附加字段为 SizeLast modifiedStorage classEncryption

我可以看到存储在 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.)

删除该列解决了问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。