我开始使用AWS Data Wrangler
和Athena
将我的数据文件上传到S3上,并能够分别查询它们。我的问题是关于";"安全地";更新表中的数据。
以下是我所做的:
-
我使用了AWS Data Wrangler,
wr.s3.to_parquet( df=my_df, path='s3://temp', dataset=True, partition_cols = ['date'], concurrent_partitioning = True, mode = append )
将我的
DataFrame
导出到S3-作为parquet
文件。 -
我使用AWS Glue在S3中抓取我的数据文件,并创建
Table A
。 -
通过Athena,我可以在
Table A
中查询我的数据。
现在我想更新表A中的数据。我的问题是:
- (插入新行(:如果我按照上面所做的操作,并将模式更改为";"重写";,然后我在S3中的所有数据都被删除(预期的,不希望的!(,并且新的数据文件被写入S3。因此,Glue目录爬网会在表A中产生新的数据行,同时删除
Table A
中我过去的所有数据。这不是我的愿望有安全的方法吗 - (更新行(:如果我想更新
Table A
中的数据,该怎么办。使用AWS Wrangler,如果不在Table A
中添加冗余行,我如何实现这一点
我已经使用mode=append
测试了(2(,事实上,我最终在Table A
中获得了冗余行。
如果你能分享你的想法,我很感激
谢谢,
您可以使用以下API:
awswrangler.s3.merge_upsert_table
参考编号:https://aws-sdk-pandas.readthedocs.io/en/stable/stubs/awswrangler.s3.merge_upsert_table.html
我认为您需要使用mode="overwrite_partitions"