Чтение в файле RDS из памяти с помощью aws.s3 - PullRequest
1 голос
/ 30 октября 2019

Я использую облачный код r aws.s3 для загрузки файла RDS из s3. У меня есть свое собственное время выполнения R в лямбде. У aws.s3 есть удобный метод s3readRDS ("s3: // pathtoyourfile"). Это хорошо работает, но имеет ограничение в том, что сохраняет файл RDS на диск, а затем должен прочитать его обратно с использованием readRDS. Это хорошо для небольших файлов, но для больших файлов нет необходимости, так как у нас ограниченное дисковое пространство.

Прямо сейчас я как бы застрял с этими большими файлами данных, и возможность вытащить их в базу данных на данный момент просто невозможна из-за целевой группы, поэтому я пытаюсь свести к минимумунаша стоимость и максимальная пропускная способность, и это последний гвоздь в этом гробу.

Согласно документации: «Некоторым пользователям может показаться, что необработанный формат векторного ответа \ code {get_object} незнаком. Объект также будет иметь атрибуты, в том числе \ dQuote {content-type}, который может быть полезен для принятия решения о том, как впоследствии обрабатывать вектор. Ниже приведены две общие стратегии. Для типов текстового содержимого можно запустить \ code {\ link [base] {charToRaw}}самый полезный первый шаг, чтобы сделать ответ понятным для человека. В качестве альтернативы, преобразование необработанного вектора в соединение с помощью \ code {\ link [base] {rawConnection}} также может быть полезным, так как это часто может быть передано в функции синтаксического анализаточно так же, как соединение с файлом. "

На основании этого (и примера использования load ())приведенный ниже код выглядит так, как будто он должен работать, но это не так.

foo <- readRDS(rawConnection(get_object("s3://whatever/foo.rds")))

Error in readRDS(rawConnection(get_object("s3://whatever/foo.rds",  : 
  unknown input format

Я не могу представить поток данных правильным для readRDS или десериализации, чтобы понять это. Я знаю, что файл правильный, так как использование сохранения на диск / загрузка с диска работает нормально. Но я хочу знать, как превратить «foo» в несериализованный объект без сохранения / загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...