首页 > 解决方案 > AWS Glue - 即使没有架构更改,表版本也会随着数据加载而增加

问题描述

我有一个 lambda 作业,它不经常使用 AWS Wrangler 将 parquet 文件转储到 S3 存储桶/Glue 表中。
每次有新数据时,这个 Glue 表似乎都在增加表版本号,即使架构没有改变。

我认为问题不在于 lambda 作业/牧马人,因为它按预期存放了镶木地板文件。我还单独测试了该代码,它按预期工作。
尽管没有更改架构,但 Glue 数据目录表发生了一些事情,这使得它增加了版本。

我检查了底层 parquet 文件中的差异,以查看更新之间是否有一些架构、数据类型等更改,但没有。我已经通过控制台和 AWS CLI (aws glue get-table-versions) 检查了 Glue 表版本之间的差异,但也没有发现任何差异(只有 UpdateTime 和 VersionId 发生了变化)。

我试图用相同的代码重新创建我的设置,但没有发现这个问题。我试图在同一个地方删除并重新创建 Glue 表,但问题再次出现。

问题:什么可能导致我的 Glue 表版本号在没有架构更改时增加?

注意:有问题的代码如下所示。它是一个更大函数的一部分(这实际上只是生成主要 lambda 函数正在做什么的日志)。它本身可以正常工作,并且不使用其余代码中的变量等。我不明白这怎么可能是问题,但无论如何都包括在这里。

#other functions do some things when triggered by a new file in another s3 bucket

#this function is just logging which files were processed. It's the Glue table from these log files which is having issues with the version number increasing every time a new log file is added.
import aws-wrangler as wr
def log(resource, filename):
    log_df = build_log(resource, filename) # for building the log df, just columns of date, time, file used etc
    wr.s3.to_parquet(
        df=log_df,
        path=log_path(), #s3 bucket where parquet logs are being put
        dataset=True,
        catalog_versioning=False,
        database="MYDB",
        partition_cols=['date'],
        table='log',
        mode='append'
    )

标签: amazon-web-servicesamazon-s3aws-lambdaaws-glueaws-data-wrangler

解决方案


我认为这是由于分区。您正在根据日期进行分区,所以我想对于时间单位的每一天都会添加一个新分区。新分区是增加表版本的原因。


推荐阅读