Чтение заголовков из файла csv, хранящегося на S3 в R

Я пытаюсь прочитать заголовки из файла csv, который хранится на s3. Я пробовал несколько способов сделать это. Но все мои методы загружают csv из s3 локально в R, а затем читают заголовок. Это не эффективный способ сделать.

Мои попытки:

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.


person Rushabh Patel    schedule 13.02.2018    source источник


Ответы (1)


Краткий ответ: S3 — это хранилище документов, а не файловая система. Вы не можете (*) выполнять операции с файловой системой на удаленных объектах S3.

Более длинный и правильный ответ: Вам не нужно каждый раз загружать весь файл. Вы можете использовать s3 API для извлечения раздела файла, как показано.

Извлеките первые n КБ каждого файла, где n достаточно велико, чтобы всегда получать заголовки, а затем обработайте эти заголовки как обычно.

person mcfinnigan    schedule 13.02.2018
comment
Узнал новое! Очень признателен. - person Rushabh Patel; 13.02.2018