Dan*_*ler 45 python pandas blaze parquet
如何在不设置Hadoop或Spark等集群计算基础架构的情况下,将适当大小的Parquet数据集读入内存中的Pandas DataFrame?这只是我想在笔记本电脑上用简单的Python脚本在内存中读取的适量数据.数据不驻留在HDFS上.它可以在本地文件系统上,也可以在S3中.我不想启动并配置其他服务,如Hadoop,Hive或Spark.
我认为Blaze/Odo会使这成为可能:Odo文档提到了Parquet,但是这些示例似乎都要通过外部Hive运行时.
chr*_*ock 61
pd.read_parquet('example_pa.parquet', engine='pyarrow')
Run Code Online (Sandbox Code Playgroud)
要么
pd.read_parquet('example_fp.parquet', engine='fastparquet')
Run Code Online (Sandbox Code Playgroud)
以上链接说明:
这些引擎非常相似,应该读/写几乎相同的镶木地板格式文件.这些库的不同之处在于具有不同的底层依赖关系(fastparquet使用numba,而pyarrow使用c-library).
dan*_*frg 16
更新:自从我回答这个问题以来,为了更好地阅读和编写实木复合地板,我们已经做了很多关于Apache Arrow的工作.另外:http://wesmckinney.com/blog/python-parquet-multithreading/
有一个蟒蛇拼花阅读器相对较好:https://github.com/jcrobak/parquet-python
它将创建python对象,然后您必须将它们移动到Pandas DataFrame,因此该过程将比pd.read_csv
例如慢.
小智 12
df = pd.DataFrame({
'student': ['personA007', 'personB', 'x', 'personD', 'personE'],
'marks': [20,10,22,21,22],
})
Run Code Online (Sandbox Code Playgroud)
df.to_parquet('sample.parquet')
Run Code Online (Sandbox Code Playgroud)
df = pd.read_parquet('sample.parquet')
Run Code Online (Sandbox Code Playgroud)
WY *_*Hsu 10
除了 Pandas,Apache pyarrow 还提供了将 parquet 转换为 dataframe 的方法
代码很简单,只需输入:
import pyarrow.parquet as pq
df = pq.read_table(source=your_file_path).to_pandas()
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅 Apache pyarrow Reading and Writing Single Files 中的文档
归档时间: |
|
查看次数: |
66255 次 |
最近记录: |