【问题标题】:Strategy for Updating Schema/Data of Data Stored in AWS S3更新存储在 AWS S3 中的数据的架构/数据的策略
【发布时间】:2020-07-17 14:44:38
【问题描述】:

在我的组织中,我们正在使用一组 AWS S3、AWS GlueAthena 来推动一些内部指标的报告。通常,此堆栈非常适合快速设置以报告原始数据(存储在 S3 中)。我们遇到的问题是,如果我们注意到我们需要以某种方式更新已经存储在 S3 中的数据,该怎么办。例如,我们要更新具有特定字符串的列中的值以更新该值。

与数据库不同,我们不能只运行查询来更新所有现有数据。我试图看看我们是否可以利用Glue Jobs 来实现这一点,但根据我有限的理解,它似乎并不是要从一个桶回到同一个桶。

我唯一能想到的就是编写一个自定义工具来迭代 S3 存储桶、加载文件、提供转换并将其放回原处,从而覆盖原始数据。不过,似乎必须有更好的方法。

【问题讨论】:

标签: amazon-web-services amazon-s3 aws-glue amazon-athena


【解决方案1】:

在传统的类似蜂巢的仓储解决方案中,更新不是以本地方式处理的,我认为 Athena 就是这样。一种常见的解决方案是一种工程解决方法,您可以“插入覆盖”一个分区(借用 Hive 语法,在 Presto 中可能,希望在基于 Presto 的 Athena 中也可能)。

其他解决方案包括创建新表和自动替换用户应该查询的视图,而不是直接查询基础表。

由于这是一个常见问题,因此也有一些现成的解决方案,但我不知道 Athena 是否可以使用这些解决方案。 Presto (Presto SQL) 当然可以:

  • Hive ACID 事务表(当前需要更新 Hive 运行时)
  • Data Lake(由 Databricks 开源;当前更新需要 Spark 运行时)
  • 胡迪(我对这个知之甚少)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2018-06-20
    相关资源
    最近更新 更多