【问题标题】:Tool to "Data Load" or "ETL" -- from SQL Server into Amazon Redshift“数据加载”或“ETL”工具——从 SQL Server 到 Amazon Redshift
【发布时间】:2014-05-21 02:35:16
【问题描述】:

我正在尝试找出一个不错但简单的工具,我可以将它自己托管在 AWS EC2 中,这将允许我从 SQL Server 2005 中提取数据并推送到 Amazon Redshift。 我基本上在 SQL Server 中有一个视图,我正在执行 SELECT *,我只需将所有这些数据放入 Redshift。最大的担忧是有很多数据,这需要可配置,以便我可以将其排队、作为几乎/连续的作业运行等。

有什么建议吗?

【问题讨论】:

  • 试试 SSIS。除 Free/Express 之外的所有 SQL Server 版本都免费提供 SSIS。我不知道它是否包含连接到 Amazon redshift 的适配器/组件。如果有,请告诉我们。
  • 像 Kettle 这样的东西可能有用:community.pentaho.com/projects/data-integration

标签: sql sql-server amazon-web-services etl


【解决方案1】:

亚历克斯普罗,

将表转储到文件,那么您需要解决两个基本挑战:

  1. 将数据传输到亚马逊
  2. 正在将数据加载到 Redshift 表中。

Amazon S3 将在这两个方面为您提供帮助:

  1. S3 支持将文件从您的 SQL 服务器位置快速上传到 Amazon。请参阅此great article。它是从 2011 年开始的,但几个月前我做了一些测试,看到了非常相似的结果。我正在测试千兆字节的数据,并且 16 个上传线程都可以,因为我不在骨干网。要记住的关键是压缩和并行上传是您减少上传时间的朋友。

  2. 一旦数据在 S3 上,Redshift 支持通过 COPY SQL 命令从 S3 上的文件到表的高性能并行加载。为了获得最快的加载性能,根据表分布键对数据进行预分区并对其进行预排序以避免昂贵的真空。亚马逊的best practices 中有详细记录。我不得不说这些人知道如何让事情变得整洁和简单,所以只需按照步骤操作即可。

如果您是编码员,您可以使用任何您想要的 shell/语言的脚本远程编排整个过程。您需要工具/库来将 HTTP 并行上传到 S3 并使用命令行访问 Redshift (psql) 以启动 COPY 命令。

另一个选项是 Java,有用于 S3 上传和 JDBC 访问 Redshift 的库。

正如其他海报所暗示的,您也可以使用 SSIS(或基本上任何其他 ETL 工具)。我正在用 CloverETL 进行测试。负责自动化流程以及对文件进行分区/预排序以进行加载。

【讨论】:

  • 哦,你想看这个one
【解决方案2】:

现在微软发布了 SSIS Powerpack,所以你可以在本地做。

SSIS Amazon Redshift 数据传输任务

Very fast bulk copy from on-premises data to Amazon Redshift in few clicks
Load data to Amazon Redshift from traditional DB engines like SQL Server, Oracle, MySQL, DB2
Load data to Amazon Redshift from Flat Files
Automatic file archiving support
Automatic file compression support to reduce bandwidth and cost
Rich error handling and logging support to troubleshoot Redshift Datawarehouse loading issues
Support for SQL Server 2005, 2008, 2012, 2014 (32 bit and 64 bit) 

为什么选择 SSIS PowerPack?

High performance suite of Custom SSIS tasks, transforms and adapters 

【讨论】:

  • 我认为微软没有同名的工具。你一定是指那个活泼的人。
【解决方案3】:

使用现有的 ETL 工具,避免在 Amazon (S3/Dynamo) 中暂存数据的另一种选择是使用商业 DataDirect Amazon Redshift 驱动程序,该驱动程序支持在线上的高性能负载,而无需额外依赖暂存数据。

https://blogs.datadirect.com/2014/10/recap-amazon-redshift-salesforce-data-integration-oow14.html

【讨论】:

    【解决方案4】:

    为了将数据导入 Amazon Redshift,我创建了 DataDuck http://dataducketl.com/

    它类似于 Ruby on Rails,但用于构建 ETL。

    为了让您了解设置的容易程度,以下是您将数据导入 Redshift 的方法。

    1. gem 'dataduck' 添加到您的 Gemfile。
    2. 运行bundle install
    3. 运行 datatduck quickstart 并按照说明进行操作
    4. 这将自动生成代表您要迁移到数据仓库的表和列的文件。您可以修改这些以对其进行自定义,例如删除或转换某些列。
    5. 将此代码提交到您自己的 ETL 项目存储库中
    6. Git 拉取 EC2 服务器上的代码
    7. 从 EC2 服务器对 cron 作业运行 dataduck etl all,以将所有表传输到 Amazon Redshift

    【讨论】:

      【解决方案5】:

      为什么不用 Python+boto+psycopg2 脚本? 它将在 EC2 Windows 或 Linux 实例上运行。 如果是操作系统 Windows,您可以:

      1. 从 SQL Server 中提取数据(使用 sqlcmd.exe
      2. 压缩它(使用 gzip.GzipFile)。
      3. 分段上传到 S3(使用 boto)
      4. 将其附加到 Amazon Redshit 表(使用 psycopg2)。

      同样,当我写 Oracle-To-Redshift-Data-Loader 时它对我有用

      【讨论】:

        猜你喜欢
        • 2018-04-25
        • 1970-01-01
        • 2015-07-24
        • 2018-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-15
        相关资源
        最近更新 更多