如何使用RedShift查询的输出作为EMR作业的输入?

时间:2013-07-17 21:59:22

标签: amazon-web-services amazon-emr amazon-redshift

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

我想获取查询的结果,并将它们用作EMR作业的输入。这是程序化的最佳方式。

目前我的EMR作业从S3获取一个平面文件作为输入,我使用Amazon Java SDK来设置此作业以及所有内容。

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

或者,RedShift和AWS SKD是否提供了一种更有效的方法来将查询从RedShift直接传输到EMR,从而切断了S3步骤?

由于

最近与Amazon Redshift团队的成员交谈时,他们表示正在解决此问题。

1 个答案:

答案 0 :(得分:4)

这很简单 - 不需要Sqoop。在作业前面添加Cascading Lingual步骤,对S3执行Redshift UNLOAD命令:

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

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

这比添加Sqoop要高得多,而且维护起来要简单得多。