我需要从S3中加载一个大小约为3GB,包含大约1800万行和7列的csv文件到R或者RStudio。我的用于从S3读取数据的代码通常是这样的:
library("aws.s3")
obj <-get_object("s3://myBucketName/aFolder/fileName.csv")
csvcharobj <- rawToChar(obj)
con <- textConnection(csvcharobj)
data <- read.csv(file = con)
现在,由于文件比平常要大得多,我收到了一个错误。
> csvcharobj <- rawToChar(obj)
Error in rawToChar(obj) : long vectors not supported yet: raw.c:68
阅读这篇帖子后,我理解向量太长了,但在这种情况下我该如何对数据进行子集化?还有其他建议,如何处理从S3读取的大文件?
skip
和nrows
参数以块的方式读取文件?使用data.table::fread
[带有类似参数] 可能会大大提高速度(或者使用readr::read_csv
,但我猜测fread
更快)。 - Ben Bolkersave_object("s3://myBucketName/aFolder/fileName.csv", file = "myfile.csv"); data.table::fread("myfile.csv")
这段代码能够正常工作吗? - Hughsave_object(...
导致了另一个问题:Error in writeBin(httr::content(r, as = "raw"), con = file) : long vectors not supported yet: ../../../../R-3.4.3/src/main/connections.c:4147
- mmell