"Data Load"或"ETL"的工具 - 从 SQL Server 到 Amazon Redshift



我正在尝试找出体面但简单的工具,我可以在AWS EC2中托管自己,这将允许我从SQL Server 2005中提取数据并推送到Amazon Redshift。我基本上有一个视图在SQL Server上,我正在做SELECT *,我需要把所有这些数据到红移。最大的问题是有很多数据,这将需要是可配置的,所以我可以排队,作为一个每晚/连续的作业运行,等等。

有什么建议吗?

alexeypro,

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

  1. 向Amazon传输数据
  2. 将数据加载到红移表。

Amazon S3将同时帮助您:

  1. S3支持从SQL服务器位置快速上传文件到Amazon。看看这篇很棒的文章。它是2011年的,但几个月前我做了一些测试,看到了非常相似的结果。我用千兆字节的数据进行测试,16个上传线程没问题,因为我不是骨干。关键是要记住,压缩和并行上传是你的朋友,以减少上传时间。

  2. 一旦数据在S3上,Redshift支持通过COPY SQL命令从S3上的文件到表的高性能并行加载。要获得最快的负载性能,请根据表分布键对数据进行预分区,并对其进行预排序,以避免昂贵的真空处理。所有这些都在Amazon的最佳实践中得到了很好的记录。我不得不说,这些家伙知道如何把事情弄得整洁。很简单,所以只要按照步骤做就行了。

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

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

正如其他海报所建议的,你可能也可以使用SSIS(或本质上任何其他ETL工具)。我正在测试CloverETL。负责过程的自动化,以及文件的分区/预分类。

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

SSIS亚马逊红移数据传输任务

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 

对于现有的ETL工具,避免在Amazon (S3/Dynamo)中暂存数据的另一个选择是使用商业DataDirect Amazon Redshift Driver,它支持在线上的高性能负载,而不需要额外依赖于暂存数据。

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

为了让数据进入Amazon Redshift,我制作了DataDuck http://dataducketl.com/

它就像Ruby on Rails,但是用于构建etl。

为了让你了解设置Redshift有多容易,下面是你如何将数据转换成Redshift的方法。

    添加gem 'dataduck'到你的Gemfile。
  1. 运行bundle install
  2. 运行datatduck quickstart并按照指示执行
  3. 这将自动生成表示要迁移到数据仓库的表和列的文件。您可以修改这些来自定义它,例如删除或转换一些列。
  4. 将此代码提交到您自己的ETL项目存储库
  5. Git把代码放到EC2服务器上
  6. 从EC2服务器在cron作业上运行dataduck etl all,将所有表转移到Amazon Redshift

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

  1. 从SQL Server(使用sqlcmd.exe)提取数据
  2. 压缩(使用gzip.GzipFile)
  3. Multipart上传至S3(使用boto)
  4. 添加到Amazon Redshit表(使用psycopg2)。

同样,当我写Oracle-To-Redshift-Data-Loader

时,它也为我工作了

最新更新