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

Pun*_*cky 2 amazon-s3 amazon-web-services amazon-athena

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

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

San*_*are 5

是的,这是预期的。

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

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

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