Pun*_*cky 2 amazon-s3 amazon-web-services amazon-athena
我定义了一个分区表,它指向使用日期分区的 S3 存储桶。我在 S3 存储桶中有过去 3 个月的数据。我已经加载了第一个月的分区。但是,在过去的两个月里,我没有使用msck repair table或命令加载分区中的数据。alter table当我尝试查询表时,过去 2 个月的数据不会从 S3 加载,只有最新的分区数据显示在查询结果中。这是预期的吗?如果是这样,为什么?
我尝试为同一个 s3 存储桶创建另一个分区表,但这一次我没有加载任何分区。当我查询该表时,我得到最新的记录。
是的,这是预期的。
Athena 使用元数据来识别 S3 中的数据。用于检测 S3 中数据的最重要的元数据是分区。Athena 在元数据中保留有关所有分区的详细信息。使用此分区信息,它可以到达 S3 中的相应文件夹来获取数据。
识别新分区的方法有以下三种: 1. 在 S3 存储桶上运行 Glue 爬虫,它将刷新分区元数据。2. 使用alter tableathana 中的命令添加新分区 3.repair table如果您的分区具有与表架构不同的架构,请使用msck。