【发布时间】:2020-07-17 14:44:38
【问题描述】:
在我的组织中,我们正在使用一组 AWS S3、AWS Glue 和 Athena 来推动一些内部指标的报告。通常,此堆栈非常适合快速设置以报告原始数据(存储在 S3 中)。我们遇到的问题是,如果我们注意到我们需要以某种方式更新已经存储在 S3 中的数据,该怎么办。例如,我们要更新具有特定字符串的列中的值以更新该值。
与数据库不同,我们不能只运行查询来更新所有现有数据。我试图看看我们是否可以利用Glue Jobs 来实现这一点,但根据我有限的理解,它似乎并不是要从一个桶回到同一个桶。
我唯一能想到的就是编写一个自定义工具来迭代 S3 存储桶、加载文件、提供转换并将其放回原处,从而覆盖原始数据。不过,似乎必须有更好的方法。
【问题讨论】:
-
由于 s3 对象的不可变特性,无法直接更新。我已经在 EMR 上看到了 hudi 的实现,它允许您进行更新和插入。你可以在这里参考这些:hudi.apache.org/docs/quick-start-guide.html#pyspark-example, aws.amazon.com/blogs/aws/…
标签: amazon-web-services amazon-s3 aws-glue amazon-athena