amazon-web-services - 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'
)
解决方案
我认为这是由于分区。您正在根据日期进行分区,所以我想对于时间单位的每一天都会添加一个新分区。新分区是增加表版本的原因。
推荐阅读
- azure - 如何绕过 Backup-SqlDatabase 提示输入密码?
- node.js - 创建配置文件身份验证中间件的问题
- python - 如何找到子字符串字符串的一部分
- android - Qt 应用程序的 Android Package Kit 文件名
- css - Accelerated Mobile Page 和表格突出显示在屏幕上
- python - 使用 pandas python 聚合数据
- angular - 在根以外的地方使用 Ionic 4 选项卡
- php - 如何在 IIS 中启用自定义 PHP 错误日志记录?
- asp.net - .net 4.x 框架和 asp.net core 2.2 应用程序在同一个域上
- angular - Angular 2显示和隐藏按钮组件