¿Cómo leer un archivo de parquet en Pandas DataFrame?

¿Cómo leer un conjunto de datos de parquet de tamaño modesto en un Pandas DataFrame en memoria sin configurar una infraestructura de computación en clúster como Hadoop o Spark? Esta es solo una cantidad moderada de datos que me gustaría leer en memoria con un simple script de Python en una computadora portátil. Los datos no residen en HDFS. Se encuentra en el sistema de archivos local o posiblemente en S3. No quiero girar y configurar otros servicios como Hadoop, Hive o Spark.

Pensé que Blaze / Odo habría hecho esto posible: la documentación de Odo menciona a Parquet, pero los ejemplos parecen estar pasando por un tiempo de ejecución externo de Hive.

pandas 0.21 introduce nuevas funciones para Parquet :

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

o

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

El enlace anterior explica:

Estos motores son muy similares y deberían leer / escribir archivos de formato de parquet casi idénticos. Estas bibliotecas se diferencian por tener diferentes dependencias subyacentes (fastparquet mediante el uso de numba, mientras que pyarrow utiliza una biblioteca c).

Actualización: desde el momento en que respondí esto, se ha trabajado mucho en este aspecto de Apache Arrow para una mejor lectura y escritura del parquet. También: http://wesmckinney.com/blog/python-parquet-multithreading/

Hay un lector de parquet de python que funciona relativamente bien: https://github.com/jcrobak/parquet-python

Creará objetos de Python y luego tendrá que moverlos a Pandas DataFrame para que el proceso sea más lento que pd.read_csv por ejemplo.