S3数据湖中数据的增量更新

时间:2018-10-21 21:19:54

标签: amazon-web-services amazon-s3

我是AWS的新手,来自数据仓库ETL背景。我们目前正在使用AWS服务Data Lake迁移到云中,并尝试使用sqoop作业从外部源RDBMS系统将数据加载到Amazon s3登陆层(存储桶),然后使用Informatica BDM将数据加载到Amazon S3的不同层(存储桶)。

每天都会从外部源系统获取数据。我不确定如何在S3中实现增量负载/ SCD类型。在Amazon S3存储桶中创建对象后是否有可能更改对象,还是我们必须继续在s3存储桶中创建日常负载副本作为对象?

我了解Amazon为我们提供了数据库选项,但我们直接将数据加载到Amazon S3中。

1 个答案:

答案 0 :(得分:1)

Amazon S3只是一个存储系统。它将存储提供的任何数据。

不可能“更新” Amazon S3中的对象。可以覆盖(替换)对象,但不能附加对象。

通常,通过添加其他文件来附加数据湖中的信息,例如每天的信息转储。从数据湖中处理数据的系统通常会处理多个文件。实际上,这是一个更有效的过程,因为可以并行处理数据,而不是尝试读取单个大文件。

因此,您的系统可以执行新的完整转储以替换数据,也可以使用增量数据存储其他文件。

另一种常见做法是对数据进行分区,这会将文件放入每月,每天或每小时的不同目录中,例如不同的目录中。这样,当系统处理数据湖中的数据时,它仅需要读取已知包含给定时间段内数据的目录中的文件。例如,如果查询希望处理给定月份的数据,则只需要读取包含该月份数据的目录,从而加快了处理速度。 (分区也可以是分层的,例如在一个月中的一天之内有一个小时的目录。)

要回答您的问题“我们如何在S3中实现增量负载/ SCD类型”,实际上取决于一旦数据进入数据湖,您将如何使用数据。最好以有助于最终使用系统的方式存储数据。