gpt4 book ai didi

r - 如何同时从 S3 下载多个对象?

转载 作者:行者123 更新时间:2023-12-04 19:59:26 61 4
gpt4 key购买 nike

我在 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

从 EC2,使用 AWS CLI ,我想同时下载 2015 年分钟等于 16 的所有文件,仅适用于服务器 uk4339 和 uk4338

有没有聪明的方法来做到这一点?

此外,如果这是 s3 中用于查询数据的糟糕文件结构,我将非常感谢有关如何更好地设置它的任何建议。

我可以放一个相关的 aws s3 cp ...命令进入 shell/bash 脚本中的循环以按顺序下载相关文件,但是想知道是否有更有效的方法。

作为额外的奖励,我想将结果也作为一个 csv 行绑定(bind)在一起。

可以使用这行 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)

创建的 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

然后您可以并行获取它们,例如一次 32 个,如下所示:
parallel -j 32 echo aws s3 cp {} . < GrabMe.txt

或者如果您更喜欢从左到右阅读
cat GrabMe.txt | parallel -j 32 echo aws s3 cp {} . 

您显然可以将并行请求的数量从 32 更改为任何其他数量。目前,它只是 echo es 它将运行的命令,但您可以删除单词 echo当你看到它是如何工作的。

有很好的教程 here ,并且 Ole Tange(GNU Parallel 的作者)在 SO 上,所以我们相处得很好。

关于r - 如何同时从 S3 下载多个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30108117/

61 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com