是否可以更新已写入 S3 的数据?

Is it possible to update data already written in S3?

感谢您调查我的问题。我很感激。

所以我是这个领域的新手...但我正在考虑用 S3 替换当前使用的 Hadoop,但在此之前,我想知道是否可以更新已写入 S3 中的数据。

Hadoop作为HDFS,你只写一次,读很多次,这不允许我更新已经写在上面的数据。我有一个RDB,我想集成到Hadoop中,但由于这个RDB需要及时更新而失败了。 听说S3,你可以使用Athena或者其他可以让我UPDATE的中间件,这可能可以解决我之前提到的Hadoop问题。

非常感谢您通读,如果您能分享您的知识,我们将不胜感激。谢谢:)

你应该看看 Amazon EMR:

Amazon EMR is a managed cluster platform that simplifies running big data frameworks, such as Apache Hadoop and Apache Spark, on AWS to process and analyze vast amounts of data. By using these frameworks and related open-source projects, such as Apache Hive and Apache Pig, you can process data for analytics purposes and business intelligence workloads. Additionally, you can use Amazon EMR to transform and move large amounts of data into and out of other AWS data stores and databases, such as Amazon S3 and Amazon DynamoDB.

它可以提供一个托管的Hadoop环境,它可以直接使用存储在Amazon S3中的数据。

Amazon S3 是一项 object-storage 服务。与您可以在编辑器中打开并更改一个字节的本地磁盘上的文件不同,对 Amazon S3 中对象的任何更新都需要替换 整个对象 。 Hadoop 和 Amazon Athena 等系统通常通过在同一目录中添加附加文件来 append 数据,但这种方法对于 更新或删除 数据并不容易。为此,在进行更新时将数据复制到新的 table (CREATE TABLE AS) 通常更容易。

我见过的唯一允许更新的系统是 Delta Lake by Databricks

我已经通过 Databricks 实现了 Delta Lake 的开源版本,它可以在 parquet 文件上启用 ACID 事务(更新、删除、插入)。它可以工作,但很难在 AWS Glue 中进行设置,这是我本周必须为 POC 做的。它允许您执行诸如将 spark 数据框合并到现有数据湖中之类的操作。