【问题标题】:How to use output of RedShift query as input of an EMR job?如何使用 RedShift 查询的输出作为 EMR 作业的输入?
【发布时间】:2013-07-17 21:59:21
【问题描述】:

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

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

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

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

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

谢谢

最近与 Amazon Redshift 团队的成员进行了交谈,他们说解决方案正在开发中。

【问题讨论】:

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


    【解决方案1】:

    这很简单——不需要 Sqoop。在您的作业前面添加一个Cascading Lingual 步骤,该步骤将Redshift UNLOAD 命令执行到S3:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多