从 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。