【问题标题】:ETL Data from Amazon DMS to S3 to Redshift从 Amazon DMS 到 S3 到 Redshift 的 ETL 数据
【发布时间】:2018-04-25 00:35:34
【问题描述】:

我目前正在 S3 中构建数据湖,并已使用 DMS 成功地将数据从 mysql DB 移动到 S3。在 DMS 中,我选择了“迁移现有数据并复制正在进行的更改”选项。我将数据转换为csv,但将来可能会选择拼花。此方法创建一个初始 csv 文件,其中包含数据库表中的所有原始数据。然后它创建带有插入、删除、更新的后续 csv 文件。

现在我正在寻找一种将数据从 S3 复制到 Redshift 的策略。我正在寻找一种复制批量数据并将持续更改从 S3 复制到 Redshift 的策略。我可能需要汇总和总结大部分数据。我最好使用 AWS Glue,它使用 Python。此 ETL 过程必须从 S3 中的 csv 文件中读取,并且知道忽略已处理的文件。

我怎样才能促进这一点?欢迎任何想法。理想情况下,我希望有一些 Python(或 Java)脚本能够准确地按照描述的过程执行。

谢谢。

【问题讨论】:

  • 你为什么设置 DMS 从 mysql->S3 去?而不是mysql-> redshift?即将所有数据加载到红移“暂存”区域,然后直接在红移上运行数据转换?
  • 正如我所提到的,我正在构建一个数据湖。原始数据需要保留在专用湖 S3 中。
  • 你是如何处理从 mysql 到 S3 的更新的?你是在以某种方式合并它还是什么

标签: python amazon-web-services amazon-s3 amazon-redshift etl


【解决方案1】:

解决此问题的另一种方法是直接使用 Redshift 作为目标,因为

在将数据库迁移到 Amazon Redshift 期间,AWS DMS 首先将数据移动到 Amazon S3 存储桶。当文件驻留在 Amazon S3 存储桶中时,AWS DMS 然后将它们传输到 Amazon Redshift 数据仓库中的适当表中。

最后一步通过 COPY 命令进行,并使用写入 S3 的中间 CSV 文件。如果您不希望 Redshift 创建新存储桶,您也可以添加

一个自定义 S3 存储桶,作为迁移到 Amazon Redshift 的数据的中间存储。

这个中间目标可以是您为数据湖定义的任何路径。此外,您可以创建 Glue 作业,将数据转换为 Parquet 或数据湖中的任何其他格式。

来源:https://aws.amazon.com/premiumsupport/knowledge-center/dms-redshift-target-endpoint/

【讨论】:

    【解决方案2】:

    使用 Lambda 函数和触发器,您可以设置 Redshift cluster 在文件上传到 cluster 时自动加载强>S3。

    参考以下链接

    A Zero-Administration Amazon Redshift Database Loader

    【讨论】:

      【解决方案3】:

      建议将 AWS Glue 设置为自动监视 S3 目标并将 CSV 转换为 Parquet。 - http://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html - https://github.com/awslabs/aws-glue-samples

      然后使用 Amazon Redshift Spectrum 有选择地直接从数据湖加载和/或查询数据。 - http://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum.html

      【讨论】:

      • 这是一个很好的答案,只需确保您确实需要一个数据湖,因为与以红移为中心的解决方案相比,您将增加显着的复杂性和费用
      猜你喜欢
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 2016-09-25
      • 1970-01-01
      • 2021-08-16
      相关资源
      最近更新 更多