Amazon Redshift 中的 ETL 与 ELT [关闭]

Posted

技术标签:

【中文标题】Amazon Redshift 中的 ETL 与 ELT [关闭]【英文标题】:ETL vs ELT in Amazon Redshift [closed] 【发布时间】:2017-03-09 20:06:40 【问题描述】:

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

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

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

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

如果有任何建议/建议,我将不胜感激。

谢谢。

【问题讨论】:

【参考方案1】:

绝对是 ELT。

ETL可能更好的唯一情况是,如果您只是简单地遍历原始数据,然后使用 COPY 将其加载到 Redshift,然后不对其进行任何转换。即使那样,由于您将数据移入和移出 S3,我怀疑这个用例会更快。

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于Amazon Redshift 中的 ETL 与 ELT [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

仅当表存在时如何删除 Amazon Redshift 中的表

如何使用 Pentaho 处理 Amazon Redshift 中缓慢变化的维度?

Amazon EMR 与 Amazon Redshift

Amazon Redshift 中的可序列化隔离违规错误

amazon-redshift 中的 CONCAT 函数

与 Amazon Redshift 同步