Как прочитать файл паркета в Pandas DataFrame?

Как прочитать набор данных скромного размера в фрейм данных в памяти Pandas без создания кластерной вычислительной инфраструктуры, такой как Hadoop или Spark? Это только умеренный объем данных, которые я хотел бы прочитать в памяти с помощью простого скрипта Python на ноутбуке. Данные не находятся в HDFS. Он находится либо в локальной файловой системе, либо, возможно, в S3. Я не хочу вращаться и настраивать другие службы, такие как Hadoop, Hive или Spark.

Я думал Блейз / ОДО это стало бы возможным: в документации Odo упоминается паркет, но примеры, похоже, все проходят через внешнюю среду выполнения улья.

2 ответов


панды 0.21 вводит новые функции для паркета:

pd.read_parquet('example_pa.parquet', engine='pyarrow')

или

pd.read_parquet('example_fp.parquet', engine='fastparquet')

приведенная выше ссылка объясняет:

эти двигатели очень похожи и должны читать / писать почти идентичные файлы формата паркета. Эти библиотеки отличаются наличием различных базовых зависимостей (fastparquet с использованием numba, в то время как pyarrow использует C-библиотеку).


Update: с тех пор, как я ответил на этот вопрос, было много работы над этим взглядом на стрелку Apache для лучшего чтения и записи паркета. Также: http://wesmckinney.com/blog/python-parquet-multithreading/

есть считыватель паркета python, который работает относительно хорошо:https://github.com/jcrobak/parquet-python

он создаст объекты python, а затем вам придется переместить их в фрейм данных Pandas, чтобы процесс был медленнее чем pd.read_csv например.