Чтение секционированного файла Parquet с Pyarrow использует слишком много памяти - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть большая база данных Impala, состоящая из разделенных файлов Parquet.Я скопировал один раздел Parquet на локальный диск, используя HDFS напрямую.Этот раздел имеет общий объем 15 ГБ и состоит из множества файлов по 10 МБ каждый.Я пытаюсь прочитать это, используя Pandas с движком Pyarrow или напрямую с Pyarrow, но его размер в памяти использует более 60 ГБ ОЗУ, и он не читает весь набор данных перед использованием всей памяти.Что может быть причиной такого большого использования памяти?

1 Ответ

0 голосов
/ 05 февраля 2019

Размер файлов Parquet на диске и в памяти может варьироваться до величины.Паркет с использованием эффективных методов кодирования и сжатия для хранения столбцов.Когда вы загружаете эти данные в оперативную память, данные распаковываются в несжатом виде.Таким образом, для набора данных файлов размером 15 ГБ можно было бы использовать 150 ГБ ОЗУ.

Если вы не уверены, что это ваша проблема, загрузите один файл с помощью df = pandas.read_parquet и проверьте егоиспользование памяти с df.memory_usage(deep=True).Это должно дать вам хорошее представление о масштабировании между диском и оперативной памятью всего набора данных.

...