如何在Python中打开.snappy.parquet文件?

9

我该如何在Python 3.5中打开一个 .snappy.parquet 文件?目前,我使用了以下代码:

import numpy
import pyarrow

filename = "/Users/T/Desktop/data.snappy.parquet" 
df = pyarrow.parquet.read_table(filename).to_pandas()

但是,它报错了:
AttributeError: module 'pyarrow' has no attribute 'compat'

顺便说一下,我是这样安装pyarrow的:

pip install pyarrow
3个回答

8

我也遇到了同样的问题,并通过遵循https://github.com/dask/fastparquet/issues/366提出的解决方案来解决它。

1) 使用conda install安装python-snappy(因为我用pip install无法下载)

2) 添加snappy_decompress函数。

from fastparquet import ParquetFile
import snappy
def snappy_decompress(data, uncompressed_size):
    return snappy.decompress(data)
pf = ParquetFile('filename') # filename includes .snappy.parquet extension
dff=pf.to_pandas()

添加snappy_decompress函数的原因是什么?在这个例子中,pf = ParquetFile('filename')dff=pf.to_pandas()这两行代码已经完成了所有的操作。import snappysnappy_decompress函数在这个例子中并没有起到任何作用。 - undefined

6
你可以使用pandas将snppay.parquet文件读入Python pandas dataframe中。
import pandas as pd
filename = "/Users/T/Desktop/data.snappy.parquet"
df = pd.read_parquet(filename)

4

错误AttributeError:module 'pyarrow' has no attribute 'compat'有些误导人。要在pyarrow.Table实例上执行to_pandas()函数,需要安装pandas。上述错误是缺少此要求的症状。

pandas并非pyarrow的硬性要求,因为它的大部分功能可使用Python内置和NumPy来实现。因此,包括pandas在内的pyarrow用户可以在不需要预先安装pandas的情况下使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接