gpt4 book ai didi

从 r 中的 s3 中一个一个地读取文件

转载 作者:行者123 更新时间:2023-12-04 02:43:34 24 4
gpt4 key购买 nike

我想读取 r 中 s3 目录中给出的 csv 文件。每个文件的大小都超过6GB,每个文件都需要在r中做进一步的计算。假设我在 s3 文件夹中有 10 个文件,我需要在 for 循环 之前分别读取每个文件。首先,我尝试了这个,它在我知道 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 函数中明确给出文件名,我该如何访问多个文件。这是必要的,因为我在 Spark 中使用 partition() 将原始数据集划分为具有一些通用名称的子部分(例如 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。之后,在列表中搜索扩展名 .csv 并获取特定 S3 文件夹中所有 .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)]

关于从 r 中的 s3 中一个一个地读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58166939/

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