繁体   English   中英

更新存储在 AWS S3 中的数据的模式/数据的策略

[英]Strategy for Updating Schema/Data of Data Stored in AWS S3

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

与数据库不同,我们不能只运行查询来更新所有现有数据。 我试过看看我们是否可以利用Glue Jobs来完成这个,但从我有限的理解来看,它似乎并不意味着从一个桶到同一个桶进行 ETL。

我唯一能想到的就是编写一个自定义工具来遍历 S3 存储桶、加载文件、提供转换,然后将其放回原处,覆盖原始文件。 似乎必须有更好的方法。

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

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

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

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

暂无
暂无

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

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