AWS Glue 不删除或弃用通过现已删除的 S3 数据生成的表

AWS Glue not deleting or deprecating tables generated over now removed S3 data

由于用户错误,Glue 爬虫 运行 经常在我们的 S3 目录上充斥着 .csv 文件。当 Glue 运行 覆盖 S3 目录时 - 它为 200,000 多个 csv 文件中的每一个创建了一个 table。我 运行 一个脚本,它在不久之后删除了 .csv 文件(S3 存储桶启用了版本控制),并重新 运行 Glue 爬虫具有以下设置:

Schema updates in the data store    Update the table definition in the data catalog.
Inherit schema from table   Update all new and existing partitions with metadata from the table.
Object deletion in the data store   Delete tables and partitions from the data catalog.

在 cloudwatch 日志中 - 它正在更新与剩余数据匹配的 table,但不会删除从这些 .csv 文件生成的任何 table。根据它在 Cloudwatch 上的配置日志-它应该能够这样做。

INFO : Crawler configured with Configuration 
{
    "Version": 1,
    "Grouping": {
        "TableGroupingPolicy": "CombineCompatibleSchemas"
    }
}
 and SchemaChangePolicy 
{
    "UpdateBehavior": "UPDATE_IN_DATABASE",
    "DeleteBehavior": "DELETE_FROM_DATABASE"

我应该包括另一个设置为在 S3 存储桶上爬行的爬虫,但它已经 运行 一年多了,所以我怀疑这可能是一个冲突点。

我对可能的问题感到困惑;就目前而言,我可以编写一个脚本来匹配现有的 tables 并删除名称中带有 csv 的脚本,或者删除并通过让 Glue 重新抓取 S3 来重建数据库,但如果可能的话 - 我会而是 Glue 在确定 tables 指向 S3 本身中的任何文件后删除它们本身。

我目前正在采取编写脚本的方法来删除 Athena 创建的 tables。 Athena 查询生成的所有文件都是 49 个字符长,结果文件有五个 _ 个字符,元数据有六个 _ 个字符,通常遵循以 _csv 结尾的格式结果查询结果,以及查询元数据 _csv_metadata

我正在获取数据库中所有 table 名称的列表,过滤后仅包含 49 个字符长、以 _csv_metadata 结尾且有六个 [=10] 的名称=] 其中的字符。我正在遍历每个字符串并在数据库中删除它们对应的 table 。对于以 _csv 结尾的结果查询,我将截断 _csv_metadata 字符串的尾随九个字符,从而截断 _metadata.

如果我要对此进行改进,我还会查询 table 并确保其中没有数据并匹配某些列名定义。