【问题标题】:How do I copy a file from S3 to Amazon EMR in Data Pipeline after EMR is provisioned?预置 EMR 后,如何将文件从 S3 复制到 Data Pipeline 中的 Amazon EMR?
【发布时间】:2015-12-31 11:31:31
【问题描述】:

我正在 AWS 中创建数据管道来运行 Pig 任务。但我的 Pig 任务需要 EMR 中的其他文件。在创建集群之后和运行任务的 pig 之前,如何告诉 Data Pipeline 将文件复制到 EMR?

我只需要运行这两个命令。

hdfs dfs -mkdir /somefolder
hdfs dfs -put somefile_from_s3 /somefoler/

【问题讨论】:

    标签: hadoop amazon-web-services amazon-s3 amazon-emr


    【解决方案1】:

    如果您可以选择修改 Pig 脚本,则可以运行 mkdir 并将命令放在脚本顶部 (https://pig.apache.org/docs/r0.9.1/cmds.html)。

    否则,您可以使用在 EmrCluster 上运行的 ShellCommandActivity 并在 PigActivity 运行之前执行这些命令。此选项有一个缺点,因为如果 ShellCommandActivity 成功,但 PigActivity 失败,则只需再次重新运行 PigActivity 不会获得运行活动所需的文件,这意味着必须重新运行整个管道。所以,我会推荐第一个解决方案。

    无论哪种方式,我都很乐意为您制作工作样本。请让我知道您希望看到哪种解决方案。

    谢谢。

    【讨论】:

      【解决方案2】:

      您可以在创建集群时添加步骤,如 here 所示

      您可以配置 hive 或 pig 脚本来执行复制。您也可以使用命令行添加步骤。

      【讨论】:

        【解决方案3】:

        另外,您是否尝试过直接使用“s3://”?在大多数情况下,您可以通过 's3://' 方案将 s3 用作本机 Hadoop 文件系统。这避免了将数据从 S3 复制到 HDFS 的需要。

        --
        -- import logs and break into tuples
        --
        raw_logs =  -- load the weblogs into a sequence of one element tuples
          LOAD 's3://elasticmapreduce/samples/pig-apache/input' USING TextLoader AS (line:chararray);
        

        【讨论】:

          猜你喜欢
          • 2011-11-21
          • 1970-01-01
          • 2017-01-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-19
          • 1970-01-01
          • 2014-08-02
          相关资源
          最近更新 更多