Как открыть огромный паркетный файл, используя Pandas без достаточного количества оперативной памяти - PullRequest
2 голосов
/ 11 февраля 2020

Я пытаюсь прочитать прилично большой файл Parquet (~ 2 ГБ с ~ 30 миллионами строк) в моем ноутбуке Jupyter (в Python 3), используя функцию Pandas read_parquet. Я также установил библиотеки pyarrow и fastparquet, которые функция read_parquet использует в качестве движка для файлов паркета. К сожалению, кажется, что во время чтения мой компьютер зависает, и в конечном итоге я получаю сообщение об ошибке, говорящее о том, что ему не хватает памяти (я не хочу повторять запуск кода, так как это приведет к другому зависанию - я не знаю дословного сообщения об ошибке ).

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

У меня действительно относительно слабый компьютер с точки зрения спецификаций, только с 6 ГБ памяти и i3. Процессор 2,2 ГГц с Turbo Boost.

Ответы [ 2 ]

0 голосов
/ 07 марта 2020

Вы можете использовать Dask вместо pandas. Он построен на pandas, поэтому имеет аналогичный API, с которым вы, вероятно, знакомы, и предназначен для больших данных.

https://examples.dask.org/dataframes/01-data-access.html

0 голосов
/ 11 февраля 2020

Вам нужны все столбцы? Вы можете сэкономить память, просто загрузив те, которые вы фактически используете.

Вторая возможность - использовать онлайн-машину (например, google colab ), чтобы загрузить файл паркета и затем сохранить его как hdf. Как только он у вас есть, вы можете использовать его кусками.

...