2015-11-19 160 views
17

如何在不设置Hadoop或Spark等集群计算基础架构的情况下将适中大小的Parquet数据集读入内存中的Pandas DataFrame?这只是我想在笔记本电脑上用简单的Python脚本在内存中读取的适量数据。数据不驻留在HDFS上。它在本地文件系统上或可能在S3中。我不想启动和配置Hadoop,Hive或Spark等其他服务。如何将Parquet文件读入Pandas DataFrame?

我认为Blaze/Odo会做到这一点:Odo文档提到了Parquet,但这些例子似乎都是通过外部Hive运行时进行的。

+2

你有没有公开提供的数据?我的python-parquet分支https://github.com/martindurant/parquet-python/tree/py3在parquet.rparquet中有一个熊猫阅读器,你可以试试它。有许多镶木结构它不能处理。 – mdurant

+3

等待Pandas作者Wes Mckinney参与的Apache Arrow项目。 http://wesmckinney.com/blog/pandas-and-apache-arrow/完成后,用户应该可以直接从Pandas中读取Parquet文件。 – karenyng

+1

由于这个问题是关闭的话题(但仍然是谷歌的第一个结果),我必须在评论中回答..你现在可以使用pyarrow来读取parquet文件并将其转换为熊猫DataFrame:import pyarrow。镶木地板为pq; df = pq.read_table('dataset.parq')。to_pandas()' – sroecker

回答

15

熊猫0.21介绍new functions for Parquet

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

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

上面的链接解释:

这些发动机都非常相似,应该读/写几乎相同的镶木格式的文件。这些库因具有不同的底层依赖关系而不同(使用numba进行fastparquet,而pyarrow使用c-library)。

12

更新:自从我回答这个问题以来,在Apache Arrow上进行了大量的工作,以便更好地读写拼花地板。另外:http://wesmckinney.com/blog/python-parquet-multithreading/

有一条巨蟒镶木读者的作品相对较好:https://github.com/jcrobak/parquet-python

它将创建Python对象,然后你将不得不将它们移动到大熊猫数据框所以这个过程会比pd.read_csv例如慢。

+3

小心,它不支持写入实木复合地板... –

+5

实际上,pyarrow允许读/写:http://pyarrow.readthedocs.io/en/ latest/parquet.html – bluszcz

+0

当我尝试关注您的链接时,我获得了权限被拒绝的错误,@bluszcz - 您是否有替代方案? –

相关问题