Pandas to_parquet gzip 失败

Pandas to_parquet fails with gzip

我有一个关于 pandas pd.to_parquet 函数和 compression = 'gzip' 选项的问题。 gzip 实用程序无法识别使用此选项创建的文件。 我正在 运行宁 AWSs ec2 实例与深度学习基础 AMI (Ubuntu 18.04) 版本 53 python3.6.9,pandas1.1.5.

保存的文件
df.to_parquet(path,  engine='pyarrow', compression='gzip')

大小为 6159 字节。

gzip -dv 抛出错误“不是 gzip 格式”

如果我对未压缩保存的文件使用 gzip,即第一个 运行

df.to_parquet(path,  engine='pyarrow', compression=None)

然后 gzip .parquet 文件,生成的 .parquet.gz 文件大小为 1511 字节,不用说,gzip -dv 工作正常并恢复文件。

我尝试 google 它,但一无所获。 感谢任何帮助

pandas parquet to GZip 不会对 parquet 进行 GZip 压缩,而是生成内部 GZipped parquet,文件的 header 具有 Parquet 魔法字节(不是 GZ 的!)。

如果您想要 GZip,则必须在创建 Parquet 后使用 GZip python library。如果文件不是太大,在 BytesIO object 上创建镶木地板,因为它会快得多。 此外,压缩级别时间与大小是对数关系,通常 9 非常慢并且与 7 相比几乎没有优势。

注意,如果我没记错的话,类似地,pandas 无法加载外部 GZ 镶木地板,因为它无法识别魔法字节。您也应该解压缩它们,可能使用相同的库。