2016-04-08 2 views
0

Я хочу узнать о большом файле данных (7 ГБ): 800 строк, 5 миллионов столбцов. Поэтому я хочу загрузить эти данные и поместить их в форму, которую я могу использовать (2D-список или массив).Загрузка больших данных без итераторов или кусков

Проблема здесь, когда я загрузить данные и попытаться сохранить их, они используют всю мою память (до 12 Гбайт), а просто остановиться в строке 500.

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

Есть ли проблемы с загрузкой и хранением всего 7 ГБ данных, как я хочу? Или любая другая идея, которая могла бы мне помочь?

+0

У вас есть 12 ГБ оперативной памяти после вычитания любых других ресурсов? – timgeb

+6

В любом случае, если вы действительно хотите загрузить все в память, но не хватает памяти, ответ заключается в том, чтобы купить больше памяти. Или как-нибудь сжимайте данные. – timgeb

+0

зависит от того, что вы хотите сделать. на пути - разделение данных на части, а затем загрузка одной части каждый раз. – galaxyan

ответ

0

Вы можете попробовать получить своп или файл подкачки. В зависимости от вашей операционной системы вы можете использовать виртуальную память, чтобы ваша система могла обращаться к большему количеству объектов в одном процессе, чем в физической памяти. В зависимости от того, насколько велика величина working set, производительность может не сильно пострадать, или это может быть совершенно ужасно. Тем не менее, почти наверняка, что получение большей памяти или использование какой-либо стратегии разбиения (аналогично тому, как вы называете chunking), является лучшим решением для вашей проблемы.

В окнах посмотрите here для получения информации о том, как настроить размер файла страницы. Для Redhat Linux попробуйте this link для получения информации о добавлении swap.