Я пытаюсь загрузить большой CSV файл (226M строк по 38 столбцов) на R 64-бит с помощью пакета data.table
. Размер файла на диске составляет около 27 ГБ. Я делаю это на сервере с 64 ГБ ОЗУ. Я закрыл все остальное и начал новую сессию R/Rstudio, поэтому, когда я запускаю fread
, используется только 2 ГБ памяти. Как процессы чтения, я вижу, что использование памяти увеличивается примерно до 45,6 Гб, а затем я получаю страшный Error: cannot allocate vector of size 1.7 Gb
. Тем не менее, осталось более 18 ГБ. Возможно ли, что в 18 ГБ ОЗУ нет ни одного непрерывного блока 1.7Gb? Это связано с фиксированным размером (что я допускаю, чтобы не понимать), и если да, то есть ли способ минимизировать зафиксированный размер, чтобы достаточно места остается
Список содержит историю когорты пользователей, для которой я хочу скомпилировать и суммировать определенные статистические данные с течением времени. Я смог импортировать подмножество из 38 столбцов, используя select
в fread
, поэтому я не полностью потеряю, но это значит, что мне нужно работать с другими переменными, мне нужно выбрать и выбрать, и может в конечном итоге запустить ту же ошибку.
Для установки, которая у меня есть, есть ли другие способы получить весь этот набор данных в памяти, или мне нужно либо продолжать импортировать подмножества, либо перейти на платформу, совместимую с большими данными?
Спасибо.
Использование памяти до чтения
Использование памяти при сбое
Информация о сеансе
R version 3.3.0 Patched (2016-05-11 r70599)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows Server >= 2012 x64 (build 9200)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] data.table_1.9.6
loaded via a namespace (and not attached):
[1] tools_3.3.0 chron_2.3-47