非分区表模式未使用Glue ETL作业更新



我们有一个ETL作业,它使用下面的代码片段来更新编目表:

sink = glueContext.getSink(connection_type='s3', path=config['glue_s3_path_bc'], enableUpdateCatalog=True, updateBehavior='UPDATE_IN_DATABASE')
sink.setFormat('glueparquet')
sink.setCatalogInfo(catalogDatabase=config['glue_db'], catalogTableName=config['glue_table_bc'], catalogId=args['catalog_id'])
sink.writeFrame(dyF)

表未分区&需要每天用新数据覆盖。自glueContext不支持覆盖,我们使用purge_s3_path,purge_table方法在执行上述写入操作前一步清空S3 Location。我们对分区表也做了类似的事情& &;到目前为止,我们工作得很好。

最近更新了数据的模式(添加了一些新列)。在ETL作业完成后,它成功地使用新模式更新了分区表,但未分区的模式仍然相同。我们确实通过物理访问S3文件进行了验证。新字段出现在数据文件中。为什么模式不像分区表那样更新?我们可以用别的方法吗?

这是一个已知的限制。如果一个表没有分区,你可以删除它,让它被重新创建。

文档中的注意:"模式更新"不支持非分区表(不使用"partitionkey")。选项),https://docs.aws.amazon.com/glue/latest/dg/update-from-job.html

最新更新