AWS Athena - GENERIC_INTERNAL_ERROR:分区值的数量与过滤器的数量不匹配

Posted

技术标签:

【中文标题】AWS Athena - GENERIC_INTERNAL_ERROR:分区值的数量与过滤器的数量不匹配【英文标题】:AWS Athena - GENERIC_INTERNAL_ERROR: Number of partition values does not match number of filters 【发布时间】:2019-11-20 14:06:37 【问题描述】:

我在 Athena 中查询一个给出错误的表:GENERIC_INTERNAL_ERROR: Number of partition values does not match number of filters

我之前能够查询它,但添加了另一个分区(AWS 粘合作业)来尝试优化我稍后将在查询中执行的连接。我确实重新运行了爬虫来更新表以反映分区。

我想知道这个错误究竟意味着什么。

我尝试重新抓取数据,但没有成功。接下来,我将清除底层 S3 数据并从头开始重新处理整个数据集,然后重新抓取它。

SELECT *
FROM mydb.mytable
LIMIT 10

我想了解错误的含义,以及除了重新处理整个原始数据集并重新抓取之外,是否有其他解决方法。

【问题讨论】:

分区键的值在分区名称(逗号分隔的字符串)中的 Hive 元存储中编码。您需要更新这些分区名称。如果重新抓取数据没有帮助,我认为除了重新创建表定义之外没有其他选择。注意:重新抓取时,请确保您的数据布局实际上与您的新分区方案匹配。 【参考方案1】:

我今天遇到了同样的问题。就我而言,这是因为 s3 中的一些底层数据已经被删除,所以 Glue 表中的分区数与 s3 中的文件数不匹配。

为了解决这个问题,我只是删除了 Glue 中的表格,然后重新运行了爬虫。

【讨论】:

救命评论。谢谢! 第一件事是删除表不会删除 S3 存储桶中的数据。它只会删除 athena 表。我认为要再次加载现有数据,如果爬虫抓取特定时刻,请在运行爬虫后从 aws 控制台运行加载分区。这将包括来自 S3 存储桶的所有数据。

以上是关于AWS Athena - GENERIC_INTERNAL_ERROR:分区值的数量与过滤器的数量不匹配的主要内容,如果未能解决你的问题,请参考以下文章

使用CloudFormation模板更新AWS Athena工作组

AWS Athena (Presto) 偏移支持

无法从 AWS Redshift 访问 AWS Athena 表

AWS Athena JDBC查询超时

AWS S3 Select 和 AWS Athena 有啥区别?

sql 适用于CloudTrail日志的AWS Athena表