繁体   English   中英

使用 AWS Data Wrangler 更新 Athena 表

[英]Update Athena Table using AWS Data Wrangler

我开始分别使用AWS Data WranglerAthena将我的数据文件上传到 S3,并能够查询它们。 我的问题是关于“安全地”更新表中数据的过程。

这是我所做的:

  1. 我使用了 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文件。

  2. 我使用 AWS Glue 在 S3 中抓取我的数据文件,并创建Table A

  3. 通过 Athena,我可以在Table A中查询我的数据。

现在我想更新表 A 中的数据。我的问题是:

  1. (插入新行):如果我按照上面的操作,将模式更改为“覆盖”,那么我在 S3 中的所有数据都将被删除(预期的,不希望的,)。 并且新的数据文件被写入 S3,因此,Glue 目录爬网导致表 A 中的新数据行,同时删除了Table A中我过去的所有数据。 这不是我的愿望。 有安全的方法吗?
  2. (更新行):如果我想更新Table A中的数据怎么办。 使用 AWS Wrangler,如何在不在Table A中添加冗余行的情况下实现这一目标?

我已经使用mode=append测试了 (2),实际上我最终在Table A中得到了多余的行。

如果您愿意分享您的想法,我将不胜感激

谢谢,

我认为您需要使用mode="overwrite_partitions"

您可以使用以下 api:

awswrangler.s3.merge_upsert_table¶

参考: https://aws-sdk-pandas.readthedocs.io/en/stable/stubs/awswrangler.s3.merge_upsert_table.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM