h.l*_*l.m 5 r amazon-s3 amazon-ec2 amazon-web-services aws-cli
我在s3中有很多(数百万)个小日志文件,其名称(日期/时间)有助于定义它,即servername-yyyy-mm-dd-HH-MM.例如
s3://my_bucket/uk4039-2015-05-07-18-15.csv
s3://my_bucket/uk4039-2015-05-07-18-16.csv
s3://my_bucket/uk4039-2015-05-07-18-17.csv
s3://my_bucket/uk4039-2015-05-07-18-18.csv
...
s3://my_bucket/uk4339-2015-05-07-19-23.csv
s3://my_bucket/uk4339-2015-05-07-19-24.csv
...
etc
Run Code Online (Sandbox Code Playgroud)
从EC2,使用AWS CLI,我想同时下载2015年所有分钟等于16的文件,仅适用于所有服务器uk4339和uk4338
有一个聪明的方法来做到这一点?
另外,如果这是s3中查询数据的可怕文件结构,我将非常感谢有关如何更好地设置它的任何建议.
我可以将相关aws s3 cp ...命令放入shell/bash脚本的循环中,以便顺序下载相关文件,但是,想知道是否有更高效的东西.
作为一个额外的奖励,我想将结果排在一起作为一个csv.
可以使用此R代码行在R中生成模拟csv文件的快速示例
R> write.csv(data.frame(cbind(a1=rnorm(100),b1=rnorm(100),c1=rnorm(100))),file='uk4339-2015-05-07-19-24.csv',row.names=FALSE)
Run Code Online (Sandbox Code Playgroud)
创建的csv是uk4339-2015-05-07-19-24.csv.仅供参考,我将在最后将组合数据导入R.
由于您没有回答我的问题,也没有说明您使用的是什么操作系统,因此很难提出任何具体建议,因此我将简要建议您使用 GNU Parallel 来并行化您的 S3 获取请求以解决延迟问题。
假设你以某种方式生成了一个你想要的所有 S3 文件的列表,并将结果列表放在一个名为GrabMe.txt这样的文件中
s3://my_bucket/uk4039-2015-05-07-18-15.csv
s3://my_bucket/uk4039-2015-05-07-18-16.csv
s3://my_bucket/uk4039-2015-05-07-18-17.csv
s3://my_bucket/uk4039-2015-05-07-18-18.csv
Run Code Online (Sandbox Code Playgroud)
然后你可以并行获取它们,一次说 32 个,如下所示:
parallel -j 32 echo aws s3 cp {} . < GrabMe.txt
Run Code Online (Sandbox Code Playgroud)
或者如果您更喜欢从左到右阅读
cat GrabMe.txt | parallel -j 32 echo aws s3 cp {} .
Run Code Online (Sandbox Code Playgroud)
您显然可以将并行请求的数量从 32 更改为任何其他数字。目前,它只是echo它会运行的命令,但是echo当你看到它是如何工作时,你可以删除这个词。
这是一个很好的教程在这里,和OLE丹(GNU并行的作者)是如此,所以我们是在良好的公司。
| 归档时间: |
|
| 查看次数: |
1107 次 |
| 最近记录: |