5

所以我对 Redshift 的了解有限,这是我解决问题的计划......

我想获取查询结果,并将它们用作 EMR 作业的输入。以编程方式解决此问题的最佳方法是什么。

目前,我的 EMR 作业将来自 S3 的平面文件作为输入,并且我使用 Amazon Java SDK 来设置此作业和所有内容。

我是否应该将 RedShift 查询的输出写入 S3,并将我的 EMR 作业指向那里,然后在 EMR 作业完成后删除该文件?

或者 RedShift 和 AWS SKD 是否提供了一种更有资源的方式来直接将查询从 RedShift 传输到 EMR,从而省去 S3 步骤?

谢谢

最近与 Amazon Redshift 团队的成员进行了交谈,他们表示正在制定解决方案。

4

1 回答 1

5

这很容易——不需要 Sqoop。在您的作业前面添加一个级联语言步骤,该步骤对 S3 执行 RedshiftUNLOAD命令:

UNLOAD ('select_statement')
TO 's3://object_path_prefix'
[ WITH ] CREDENTIALS [AS] 'aws_access_credentials' 
[ option [ ... ] ]

然后,您可以直接在 S3 上处理导出,或者添加一个S3DistCp步骤以首先将数据导入 HDFS。

这将比添加 Sqoop 性能更高,维护也更简单。

于 2014-01-16T08:42:08.487 回答