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

标签 amazon-web-services amazon-s3 aws-glue amazon-athena

由于用户错误,Glue 爬虫经常运行的 S3 目录中充满了 .csv 文件。当 Glue 遍历 S3 目录时,它为 200,000 多个 csv 文件中的每一个创建了一个表。我运行了一个脚本,该脚本在不久之后删除了 .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 日志中 - 它正在更新与剩余数据匹配的表,但不会删除从这些 .csv 文件生成的任何表。根据它在 Cloudwatch 上的配置日志 - 它应该能够这样做。

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

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

我对可能的问题感到困惑;就目前而言,我可以编写一个脚本来匹配现有表并删除名称中带有 csv 的表,或者通过让 Glue 重新爬行 S3 来删除并重建数据库,但如果可能的话 - 我宁愿 Glue 删除表识别后它们本身不指向 S3 本身内的任何文件。

最佳答案

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

我得到了我数据库中所有表名的列表,过滤它只包括那些长度为 49 个字符,以 _csv_metadata 结尾,并且有六个 _其中的字符。我正在遍历每个字符串并删除它们在数据库中的对应表。对于以 _csv 结尾的结果查询,我将截断 _csv_metadata 字符串的尾随九个字符,从而截断 _metadata

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

关于amazon-web-services - AWS Glue 不删除或弃用通过现已删除的 S3 数据生成的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59796415/

相关文章:

amazon-web-services - 当我在访问策略中指定 Principal 时,消息不会发送到 SQS

android - 在没有cognito的情况下访问android中的aws私有(private)存储桶

amazon-web-services - 通过 CloudFormation 授予 Lake Formation 对 Glue 数据库中所有表的读取权限

amazon-web-services - [XX000][500310] [Amazon](500310) 无效操作 : Parsed manifest is not a valid JSON object

python - 如何让子项迭代并最终迭代 AWS S3 中子项内的文件

amazon-web-services - AWS云信息错误: Deploy error with ImageID

java - 使用 GetObjectRequest 和范围读取 AWS S3 GZIP 对象

amazon-s3 - 从 Oracle 表流式传输到 Redshift

pyspark - 减少 Parquet 文件数量的最佳方法

amazon-web-services - AWS DynamoDb : Querying for multiple items matching comparison operator