我是AWS新手,来自ETL背景的数据仓库。我们目前正在使用AWS服务数据湖向云移动,并尝试使用sqoop作业将数据从外部源关系数据库管理系统(Bucket)加载到亚马逊s3登陆层(Bucket),然后使用Informatica将数据加载到亚马逊S3中的不同层(桶)。
从外部源系统获取数据的频率为每天。我不知道如何在S3中实现Delta /SCD类型。在亚马逊的S3桶中创建对象之后,是否有可能更改它,或者我们是否必须继续在s3桶中作为对象创建日常负载的副本?
我知道亚马逊为我们提供了数据库选项,但我们被指示将数据加载到Amazon中。
发布于 2018-10-21 14:04:56
亚马逊S3只是一个存储系统。它将存储所提供的任何数据。
在亚马逊S3中不可能“更新”对象。对象可以被覆盖(替换),但不能追加。
传统上,数据湖中的信息是通过添加附加文件来附加的,例如每天转储的信息。处理数据池外数据的系统通常处理多个文件。事实上,这是一个更有效的过程,因为数据可以并行处理,而不是试图读取单个大文件。
因此,您的系统可以执行一个新的、完整的转储来替换数据,也可以用增量数据存储其他文件。
另一种常见的做法是分区数据,它将文件放入不同的目录,例如每月或每天或小时的不同目录。这样,当系统处理数据湖中的数据时,它只需要读取已知包含给定时间段数据的目录中的文件。例如,如果查询希望处理给定月份的数据,则只需读取该月份的数据目录,从而加快处理速度。(分区也可以是分层的,例如在一个月内有一个小时的目录。)
要回答您的问题“我们如何在S3中实现Delta /SCD类型”,这取决于在数据湖中如何使用数据。最好是以一种帮助系统最终消耗数据的方式来存储数据。
https://stackoverflow.com/questions/52919985
复制