1

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

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

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

4

1 回答 1

1

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

无法在 Amazon S3 中“更新”对象。可以覆盖(替换)对象,但不能追加。

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

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

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

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

于 2018-10-21T22:04:56.523 回答