Как прочитать файл Parquet в Pandas DataFrame?
Как прочитать набор данных Parquet с небольшим размером в DataFrame в памяти Pandas без настройки инфраструктуры кластерных вычислений, такой как Hadoop или Spark? Это всего лишь умеренный объем данных, которые я хотел бы прочитать в памяти с помощью простого Python script на ноутбуке. Данные не находятся на HDFS. Это либо в локальной файловой системе, либо, возможно, на S3. Я не хочу раскручивать и настраивать другие сервисы, такие как Hadoop, Hive или Spark.
Я думал, что Blaze/Odo сделал бы это возможным: документация Odo упоминает Parquet, но примеры, похоже, все проходят через внешнюю среду Hive.
Ответы
Ответ 1
pandas 0.21 вводит новые функции для Паркета:
pd.read_parquet('example_pa.parquet', engine='pyarrow')
или
pd.read_parquet('example_fp.parquet', engine='fastparquet')
В приведенной выше ссылке поясняется:
Эти двигатели очень похожи и должны читать/писать почти одинаковые файлы формата паркета. Эти библиотеки отличаются наличием разных базовых зависимостей (fastparquet с использованием numba, в то время как pyarrow использует c-библиотеку).
Ответ 2
Обновление: с тех пор, как я ответил на это, было много работы над этим взглядом на Apache Arrow для лучшего чтения и записи паркета. Также: http://wesmckinney.com/blog/python-parquet-multithreading/
Существует приложение для чтения паркета python, которое работает относительно хорошо: https://github.com/jcrobak/parquet-python
Он создаст объекты python, и вам придется переместить их в Pandas DataFrame, поэтому процесс будет медленнее, чем pd.read_csv
, например.