【问题标题】:Can I delete data (rows in tables) from Athena?我可以从 Athena 中删除数据(表中的行)吗?
【发布时间】:2018-07-26 16:44:38
【问题描述】:

是否可以通过 Athena 查询删除存储在 S3 中的数据?我必须从几个表中删除一些行(它们指向 S3 中的单独存储桶)。

我在 Athena 用户指南中找不到方法:不支持 https://docs.aws.amazon.com/athena/latest/ug/athena-ug.pdfDELETE FROM,但我想知道是否有比在 S3 中查找文件更简单的方法并删除它们。

【问题讨论】:

  • 您是否能够找到解决此问题的方法,例如自定义解决方案?

标签: amazon-web-services amazon-athena


【解决方案1】:

您可以利用 Athena 找出您要删除的所有文件,然后单独删除它们。有一个特殊的变量“$path”。

Select "$path" from <table> where <condition to get row of files to delete>

要自动执行此操作,您可以对 Athena 结果进行迭代,然后获取文件名并从 S3 中删除它们。

【讨论】:

  • 这个很酷,感谢分享,但是我不能删除整个文件,我需要删除文件中包含坏数据的特定行。
  • Athena 目前还没有这种支持。此外,我认为它不属于 Athena 的章程,因为它只是一个对存储在某处的数据的分析引擎。
【解决方案2】:

我只想补充 Dhaval 的答案。

您可以找到包含要删除的行的文件的路径,而不是删除整个文件,您可以从我假设为 Json 格式的 S3 文件中删除行。

该过程是下载具有这些行的特定文件,从该文件中删除行并将相同的文件上传到 S3。

这只是将原始文件替换为具有修改数据的文件(在您的情况下,没有删除的行)。上传后,Athena 会再次转换数据,删除的行不会显示出来。

【讨论】:

    【解决方案3】:

    我还想补充一点,在找到要更新的文件后,您可以过滤要删除的行,并使用 CTAS 创建新文件: https://docs.aws.amazon.com/athena/latest/ug/ctas.html

    稍后您可以用 CTAS 创建的新文件替换旧文件。我认为这是最简单的方法

    【讨论】:

      【解决方案4】:

      为此使用 AWS Glue。 加载您的数据,删除您需要删除的内容,然后保存数据。

      现在您还可以从 s3 中删除文件并合并数据:https://aws.amazon.com/about-aws/whats-new/2020/01/aws-glue-adds-new-transforms-apache-spark-applications-datasets-amazon-s3/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-07
        • 2018-10-17
        • 2014-12-03
        • 1970-01-01
        • 2023-02-25
        • 2023-03-29
        • 2022-12-07
        相关资源
        最近更新 更多