从 R 中存储在 S3 上的 csv 文件中读取 headers
Reading headers from csv file stored on S3 in R
我正在尝试从存储在 s3 上的 csv 文件中读取 headers。我已经尝试了几种方法来做到这一点。但是,我所有的方法都在 R 本地从 s3 下载 csv,然后读取 header。它不是有效的方法。
我的尝试:
dt <- aws.s3::s3read_using(FUN = fread(headers=T,nrows = 1),
bucket = "bucket_name/path/,
object = "abc.csv"))
cols <- colnames(dt)
第二次尝试:
# Getting file locally and then reading headers.
system(paste("s3cmd get --force -v ", s3Path, s3FileName, " ", s3FileName, sep = ""))
df <- data.table::fread(s3FileName, ...)
cols <- colnames(df)
我知道可能有一些有效的方法可以做到这一点。任何建议将不胜感激。我特别希望在 R 中做到这一点。
简短回答:S3 是文档存储,而不是文件系统。您不能(*)在远程 S3 objects.
上执行文件系统操作
更长、更正确的答案:您不必每次都下载整个文件。 You can use the s3 api to pull a section of the file 如图所示。
拉下每个文件的前 n kb,其中 n 足够大,总能为您提供 headers,然后正常处理这些 headers。
我正在尝试从存储在 s3 上的 csv 文件中读取 headers。我已经尝试了几种方法来做到这一点。但是,我所有的方法都在 R 本地从 s3 下载 csv,然后读取 header。它不是有效的方法。
我的尝试:
dt <- aws.s3::s3read_using(FUN = fread(headers=T,nrows = 1),
bucket = "bucket_name/path/,
object = "abc.csv"))
cols <- colnames(dt)
第二次尝试:
# Getting file locally and then reading headers.
system(paste("s3cmd get --force -v ", s3Path, s3FileName, " ", s3FileName, sep = ""))
df <- data.table::fread(s3FileName, ...)
cols <- colnames(df)
我知道可能有一些有效的方法可以做到这一点。任何建议将不胜感激。我特别希望在 R 中做到这一点。
简短回答:S3 是文档存储,而不是文件系统。您不能(*)在远程 S3 objects.
上执行文件系统操作更长、更正确的答案:您不必每次都下载整个文件。 You can use the s3 api to pull a section of the file 如图所示。
拉下每个文件的前 n kb,其中 n 足够大,总能为您提供 headers,然后正常处理这些 headers。