Amazon web services 从管道中删除s3文件

Amazon web services 从管道中删除s3文件,amazon-web-services,emr,amazon-data-pipeline,Amazon Web Services,Emr,Amazon Data Pipeline,我想问一下我正在AWS中使用数据管道试图完成的一项处理任务,但我一直无法让它工作 基本上,我有2个代表2个MySQL数据库的数据节点,数据应该定期从中提取并放在S3存储桶中。这个复制活动可以很好地每天选择添加的每一行,比如今天-1天 但是,包含作为CSV收集的数据的bucket应该成为EMR活动的输入,该活动将处理这些文件并聚合信息。问题是,我不知道如何删除或移动已处理的文件到不同的存储桶,因此我不必每天处理所有文件 为了澄清这一点,我正在寻找一种从管道中移动或删除S3存储桶中已经处理过的文件的

我想问一下我正在AWS中使用数据管道试图完成的一项处理任务,但我一直无法让它工作

基本上,我有2个代表2个MySQL数据库的数据节点,数据应该定期从中提取并放在S3存储桶中。这个复制活动可以很好地每天选择添加的每一行,比如今天-1天

但是,包含作为CSV收集的数据的bucket应该成为EMR活动的输入,该活动将处理这些文件并聚合信息。问题是,我不知道如何删除或移动已处理的文件到不同的存储桶,因此我不必每天处理所有文件

为了澄清这一点,我正在寻找一种从管道中移动或删除S3存储桶中已经处理过的文件的方法。我可以这样做吗?是否有其他方法可以根据命名约定或其他方式仅处理EMR活动中的某些文件?

1)创建一个脚本,该脚本采用输入路径,然后使用hadoop fs-rmr s3path删除文件。 2) 将脚本上载到s3

在emr中,使用预步- 1) hadoop fs-copyToLocal s3://scriptname。 2) chmod+x脚本名 3) 运行脚本


差不多就是这样

另一种不使用EMR的方法是通过ShellCommandActivity在一个小EC2实例中安装该工具,然后您可以在管道中使用s3cmd以您想要的任何方式操作S3 repo

这种方法的一个棘手部分是通过一个配置文件安全地配置s3cmd(基本上是传递访问密钥和密码),因为您不能只通过ssh连接到EC2实例并在管道中交互使用“s3cmd--configure”

为此,您可以使用“cat”在ShellCommandActivity中创建一个配置文件。例如:

cat <<EOT >> s3.cfg
blah
blah
blah
EOT

听起来很复杂,但很有效

更好的是,创建DataPipeline ShellCommandActivity并使用aws命令行工具

使用以下两行创建脚本:

    sudo yum -y upgrade aws-cli 
    aws s3 rm $1 --recursive
第一行确保您拥有最新的aws工具

第二个删除目录及其所有内容。$1是传递给脚本的参数

在您的活动中:

    "scriptUri": "s3://myBucket/scripts/theScriptAbove.sh",
    "scriptArgument": "s3://myBucket/myDirectoryToBeDeleted"
有关aws s3命令如何工作的详细信息,请参见:

    http://docs.aws.amazon.com/cli/latest/reference/s3/index.html

谢谢这正是我想要的。
    http://docs.aws.amazon.com/cli/latest/reference/s3/index.html