Amazon Redshift 中的 ETL 与 ELT

ETL vs ELT in Amazon Redshift

我们正在研究在 AWS 上创建数据湖解决方案 - 类似于此处概述的内容 - https://aws.amazon.com/blogs/big-data/introducing-the-data-lake-solution-on-aws/

我们会将所有 "raw" 数据存储在 S3 中,并根据需要将其加载到 EMR 或 Redshift 中。

现阶段,我正在寻找关于是使用 ETL 还是 ELT 方法将数据加载到 Amazon Redshift 的建议。我们将使用 Talend ETL/ELT。

我们应该先在 Redshift 中暂存来自 S3 的 "raw" 数据,然后再对其进行转换,还是应该转换 S3 中的数据并将其加载到 Redshift 中?

我将不胜感激 suggestion/advise。

谢谢。

这取决于使用 Redshift 的目的。如果您的业务案例是让用户针对 Redshift(或使用 Redshift 作为后端的前端应用程序)查询数据,那么我不建议在 Redshift 中进行 ETL。在这种情况下,最好提前执行业务转换(例如:S3->EMR->S3),然后将处理后的数据加载到 Redshift。

肯定是 ELT。

ETL 可能 更好的唯一情况是,如果您只是对原始数据进行一次传递,然后使用 COPY 将其加载到 Redshift,然后不进行任何转换用它。即便如此,因为您将数据移入和移出 S3,我怀疑这个用例是否会更快。

一旦您需要过滤、合并和以其他方式转换信息,在 DBMS 中进行操作会快得多。如果遇到数据转换依赖于 DW 中已有数据的情况,速度会快几个数量级。

我们 运行 每天在不同的 DW 平台上执行数百个 ELT 作业,对摄取和转换数据的替代方法进行性能测试。根据我们的经验,MPP DW 中的 ETL 和 ELT 之间的差异可能超过 2000%。