Только для чтения строки, соответствующие условию из сжатого файла RData в Shiny App? - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь сделать блестящее приложение, которое можно бесплатно разместить на shinyapps.io. Бесплатный хостинг требует, чтобы все загружаемые данные / код были <1 ГБ, и чтобы при запуске приложения использовалась память <1 ГБ в любое время. </strong>

Данные

Базовые данные (которые я загружаю) - это 1000 итераций сети с ~ 3050 узлами. Каждое взаимодействие между узлами (~ 415 000 взаимодействий на сеть) имеет 9 характеристик - происхождения, назначения и самого взаимодействия - которые мне необходимо отслеживать. Приложению необходимо считывать данные из всех 1000 сетей для выбранных пользователем узлов, отвечающих критериям ввода (тэд?) (Те 9 характеристик), и суммировать их (на карте и в таблице). Я могу использовать 1000 файлов RData для каждой сети (подробнее о формате ниже), и приложение работает, но загрузка занимает ~ 10 минут, и я бы хотел ускорить это .

Несколько замечаний о том, что я сделал / попробовал, но я не привязан ни к чему из этого, если у вас есть лучшие идеи.

  • данные слишком велики, чтобы хранить их в формате CSV (и они не превышают 1 ГБ), поэтому я сохранял их в виде файлов RData файла data.frame со сжатием "xz".
  • Чтобы еще больше уменьшить размер, я превратил данные в таблицы частот 9 представляющих интерес переменных
  • В настольной версии я создал 10 сводных файлов, каждый из которых содержал данные для 100 сетей. (~ 5 минут для загрузки), но они слишком велики для чтения в память в бесплатном блестящем приложении.
  • Я пытался создавать файлы RData для каждого узла (вместо разделения по сети), но они слишком велики для ограничения загрузки в 1 ГБ.

Я не уверен, что есть лучшие способы для упаковки данных (но опять же, рад услышать идеи!), Поэтому я стремлюсь оптимизировать его обработку.

Наконец, вопрос

Есть ли способ прочитать только определенные строки из сжатого файла RData, основываясь на некотором значении (то есть nodeID)? Этот пост ( быстро загружает подмножество строк из файла data.frame, сохраненного с помощью `saveRDS ()` ), наводит меня на мысль, что это невозможно, поскольку оно сжато. При рассмотрении других опций, awk продолжает появляться, но я не уверен, будет ли это работать с файлом RData (мне кажется, я вижу только реализации data.frame / data.table / CSV).

...