r - 从 r 中的 s3 中一一读取文件
问题描述
我想读取 s3 目录中给出的 r 中的 csv 文件。每个文件大小超过 6GB,每个文件都需要在 r 中进一步计算。想象一下,我在 s3 文件夹中有 10 个文件,我需要在之前分别阅读每个文件for loop
。首先,我尝试了这个,它适用于我知道 csv 文件名称的情况:
library(aws.s3)
Sys.setenv("AWS_ACCESS_KEY_ID" = "xyy",
"AWS_SECRET_ACCESS_KEY" = "yyx")
data <-
s3read_using(FUN=read.csv, object="my_folder/file.csv",
sep = ",",stringsAsFactors = F, header=T)
但是,如果没有在 s3read_using 函数中明确给出它们的名称,我如何访问多个文件。这是必要的,因为我partition()
在 Spark 中使用它将原始数据集划分为具有一些通用名称(例如part1-0839709037fnfih.csv
)的子部分。如果我可以自动列出 s3 文件夹中的 csv 文件并在计算之前使用它们,那就太好了。
get_ls_files <- .... #gives me list of all csv files in S3 folder
for (i in 1:length(get_ls_files)){
filename = get_ls_files[i]
tmp = s3read_using(FUN=read.csv, object=paste("my_folder/",filename),
sep = ",",stringsAsFactors = F, header=T)
.....
}
解决方案
如果有人需要,我找到了答案,尽管文档不好。要获取特定 S3 文件夹中的文件列表,您需要使用get_bucket
并定义一个prefix
. 在此之后,搜索扩展名列表并获取特定 S3 文件夹.csv
中所有文件的列表。.csv
tmp = get_bucket(bucket = "my_bucket", prefix="folder/subfolder")
list_csv = data.frame(tmp)
csv_paths = list_csv$Key[grep(".csv", list_csv$Key)]
推荐阅读
- python - 将 matplotlib 绘图特征设置为每个绘图的变量和参考
- html - 使用 matplotlib 动画可视化 html 视频
- python - python中的R qt等价物
- python - 我想用 selenium 从 textarea 复制动态生成的内容
- c++ - 如何将字符串指针数组转换为字符串类型的智能指针向量?
- javascript - 正在为每个列表项调用从 ngOnInit() 内部调用的函数
- javascript - 用于输入文本框的具有不同 ID(多 ID 输入)的 keyup jquery
- python - 单击主窗口 PyQt5 Python 中的按钮时打开窗口
- python - 如何将 Popen 对象传递给 concurrent.futures.ProcessPoolExecutor
- redis - Redis 运行版本不匹配实际版本