【发布时间】:2016-02-22 04:21:04
【问题描述】:
如何在不设置集群计算基础架构(如 Hadoop 或 Spark)的情况下将中等大小的 Parquet 数据集读入内存中的 Pandas DataFrame?这只是我想在笔记本电脑上使用简单的 Python 脚本在内存中读取的适量数据。数据不驻留在 HDFS 上。它要么在本地文件系统上,要么在 S3 中。我不想启动和配置其他服务,例如 Hadoop、Hive 或 Spark。
我认为 Blaze/Odo 会让这成为可能:Odo 文档提到 Parquet,但这些示例似乎都通过外部 Hive 运行时进行。
【问题讨论】:
-
您是否碰巧公开了数据?我的 python-parquet 分支github.com/martindurant/parquet-python/tree/py3 在 parquet.rparquet 中有一个 pandas 阅读器,你可以试试。它无法处理许多镶木地板结构。
-
等待 Pandas 作者 Wes Mckinney 参与的 Apache Arrow 项目。 wesmckinney.com/blog/pandas-and-apache-arrow 完成后,用户应该可以直接从 Pandas 读取 Parquet 文件了。
-
由于问题已作为题外话关闭(但仍然是 Google 上的第一个结果),我必须在评论中回答。您现在可以使用 pyarrow 读取镶木地板文件并将其转换为熊猫数据框:
import pyarrow.parquet as pq; df = pq.read_table('dataset.parq').to_pandas() -
有点恼火这个问题被关闭了。 Spark 和 parquet 的文档(仍然)相对较差。我也在寻找这个问题的答案。
-
fastparquet 和 pyarrow 库都可以将 parquet 文件读入 pandas 数据帧:github.com/dask/fastparquet 和 arrow.apache.org/docs/python/parquet.html
标签: python pandas dataframe parquet blaze