Glue - 书签无法识别较新分区中的文件

Glue - Bookmark doesn't recognize files in newer partitions

我有一个粘合作业,它从 S3 存储桶中读取并进行转换并将结果上传到另一个 S3 存储桶中。

这是我的 aws glue get-job-bookmark --job-name xx returns

JobBookmark": "{\"datasource0\":{\"jsonClass\":\"HadoopDataSourceJobBookmarkState\",\"timestamps\":{\"RUN\":\"4\",\"HIGH_BAND\":\"900000\",\"CURR_LATEST_PARTITION\":\"1618957000000\",\"CURR_LATEST_PARTITIONS\":\"s3://XXYY/2021/04/20/16/\",\"CURR_RUN_START_TIME\":\"2021-04-20T22:43:19.304Z\",\"INCLUDE_LIST\":\"\"}}}"

如您所见,我的 S3 结构为 bucketname/yyyy/mm/dd/HH。上面显示书签设置在前缀 2021/04/20/16.

现在,如果在完全相同的前缀处添加另一个文件,则会对其进行处理。

但是,如果有一个较新的分区,例如 2021/04/20/17,并且其中有一个文件 - 它不会被书签选中。

我的脚本非常简单,大部分都是自动生成的,因为我只是在测试这个功能。

我的 table 的位置在最顶层指定为 S3://xxyy。

感谢阅读。

这是因为在我们将胶水添加到 Athena 之前,胶水很高兴地不知道更新的分区。我们可以在较新的文件夹 ($$) 上再次修复 table 或 运行 爬虫,或者更改 table 并添加一个分区。选项 3 最适合不经常更改的架构。

alter table xxyy
add partition (partition_0=2021,partition_1=04,partition_2=21,partition_3=22)
location 's3://xxyy/2021/04/21/22/'

最好的部分是我们可以用更新的分区“预填充”table,即使这样的分区在 S3 中尚不存在。

但这有点违反直觉。希望 AWS 解决这个问题,这样我们就不需要对类似的用例采取任何行动。