快速压缩格式中不支持使用'SNAPPY'解压。

28

我试图使用fastparquet打开一个文件,但是出现了错误:

RuntimeError: Decompression 'SNAPPY' not available.  Options: ['GZIP', 'UNCOMPRESSED']

我已经安装了以下内容并重新启动了解释器:

python                    3.6.5                hc3d631a_2  
python-snappy             0.5.2                    py36_0    conda-forge
snappy                    1.1.7                hbae5bb6_3  
fastparquet               0.1.5                    py36_0    conda-forge

所有的下载都很顺利。我不知道我需要snappy还是python-snappy,所以我先下载了一个,没有解决问题,然后又下载了另一个,但仍然没有成功。我发现所有相关的问题都在下载snappy时得到解决,但即便有两个snappy,我仍然遇到这个错误!非常感谢任何帮助。


这个有更新了吗? - TwinPenguins
4
我最终使用了pyspark来读取我的文件,因为我从未收到回复。我不确定如何解决此问题,但我的项目已经继续前进了。 - B. Sharp
我也遇到了同样的问题,即使按照@Catbuilts的建议安装了pyspark也不行。我通过使用GZIP压缩来保存Parquet文件来规避了这个问题,然后切换到pyarrow引擎,因为它更快。 - bugfoot
conda install -c conda-forge python-snappy fastparquet snappy 对我来说是有效的。从conda基本频道安装这些东西不知何故没有起作用。 - Matthew Son
你好!只是想知道你是如何设置pyspark并解决这个问题的?我使用pandas时也遇到了相同的错误。 - wawawa
3个回答

29

运行:

pip install python-snappy
pip install pyarrow 

这应该会起作用。

我认为你缺少 pyarrow 包。

如果你在使用 pip 时出现错误,请改用 conda(例如:conda install python-snappy,如果还有错误,则使用conda install -c conda-forge python-snappy)。


8
安装pyarrow并不重要。对我而言,使用conda install -c conda-forge python-snappy fastparquet snappy就可以了。从基本渠道安装这些似乎无法正常工作。 - Matthew Son
2
这是解决方案;您需要从同一渠道获取python-snappy(包装器)和snappy(C库)。 - mdurant

13

根据Catbuilts的回答,您需要安装python-snappy。但是,它只是一个包装器,围绕在计算机上安装的c中的snappy实现而构建,这个问题在此答案中已经得到解决,该答案介绍了如何安装snappy-c。

假设您拥有一个基于DEB的系统(例如Ubuntu),则可以使用以下命令获取:

sudo apt-get install libsnappy-dev
python3 -m pip install --user python-snappy

为了测试它,您可以尝试以下脚本:

import pandas as pd
import snappy  # Not required but snappy (python-snappy) module should be reachable
from fastparquet import write, ParquetFile
df = pd.DataFrame({"col1": [1,2,3,4], "col2": ["a","b","c","d"]})
# df.head() # Test your initial value
write("/tmp/deleteme", df, compression="SNAPPY")
df_parquet = ParquetFile("/tmp/deleteme").to_pandas()
df_parquet.head()

0

以下安装非常有帮助

pip install fastparquet

pip install python-snappy

pip install pyarrow

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