Как открыть огромный файл паркета с помощью Pandas без достаточного количества оперативной памяти

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

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

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


person qxzsilver    schedule 11.02.2020    source источник


Ответы (2)


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

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

person Andrea    schedule 11.02.2020

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

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

person matthewmturner    schedule 07.03.2020