使用AWS Data Wrangler更新Athena表



我开始使用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中获得了冗余行。

如果你能分享你的想法,我很感激

谢谢,

您可以使用以下API:

awswrangler.s3.merge_upsert_table

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

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

相关内容

  • 没有找到相关文章

最新更新