部分加载分区时,Amazon Athena 不返回最新数据

Amazon Athena not returning recent data when partitions are partially loaded

我定义了一个分区 table,它指向一个使用日期分区的 S3 存储桶。我在 S3 存储桶中有过去 3 个月的数据。我已经加载了第 1 个月的分区。但是,在过去的 2 个月里,我没有使用 msck repair tablealter table 命令将数据加载到分区中。当我尝试查询 table 时,过去 2 个月的数据未从 S3 加载,查询结果中仅显示最新的分区数据。这是预期的吗?如果是,为什么?

我尝试为同一个 s3 存储桶创建另一个分区 table,但这次我没有加载任何分区。当我查询这个 table 时,我得到了最近的记录。

是的,这是预期的。

Athena 使用元数据识别 S3 中的数据。用于检测 S3 中数据的最重要的元数据是分区。 Athena 在元数据中保留所有分区的详细信息。使用此分区信息,它到达 S3 中的相应文件夹以获取数据。

  1. 如果您将更多文件添加到同一分区:如果分区已添加到 athena 元数据中,将自动检测所有新文件,因为 athena 使用分区元数据和 s3 位置从 S3 中的文件夹读取所有文件。
  2. 如果您在新分区中添加文件:如果分区不在 athena 元数据中,athana 不知道如何在 S3 中找到相应的文件夹。因此,它不会访问该文件夹中的数据。

新分区的识别方式有以下三种: 1. 运行 将爬虫粘贴到 S3 存储桶上,它将刷新分区元数据。 2.在athana中使用alter table命令添加新分区 3. 如果您的分区的架构与 table 架构不同,请使用 msck repair table