【问题标题】:Size of compressed files on disk increases massively after I sort?排序后磁盘上的压缩文件大小大幅增加?
【发布时间】:2021-03-24 16:00:20
【问题描述】:

我有一个以 GZIP 格式存储在磁盘上的 pandas 数据框。在 RAM 上它大约 90GB,当我使用 pandas.to_parquet 将它保存为 gzip 时,它压缩到大约 3GB。

我最近使用 pandas.sort_values 在不同的列上对其进行了排序,当我使用相同的方法保存它时,磁盘上的大小突然变成了 60GB。

为什么会发生这种情况?是否有不同的排序/保存方法来防止这种情况发生?

【问题讨论】:

  • gzip 在 32 KB 的窗口中查找字符串重复。如果您的重复字符串相距太远,它们将不会被识别,因此不会很好地压缩。您可以尝试brotli 方法,它应该能够使用最大 16 MB 的窗口,虽然我不知道 pandas 使用什么参数。

标签: pandas compression parquet


【解决方案1】:

我不得不猜测您的文件以前在不同的列上排序,并且该列的内容与紧接在前的记录的匹配是压缩的重要部分。然后,当您对不同的列进行排序时,另一列被有效地随机化,因此相似的值不再彼此靠近。您排序的列可能会比以前有更好的压缩,但与最初排序的列相比,这种影响很小。这就是扼杀压缩的原因。

【讨论】:

  • 这仍然让我大吃一惊。为什么存储相似值的位置比存储值本身便宜?
  • 不是相似的值,而是相似的字符串。如果字符串足够长,则对先前出现的相同字符串(长度和距离)的引用将比字符串本身占用更少的位。这对于短至三个的字符串长度是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-03
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
  • 1970-01-01
  • 2019-12-01
  • 1970-01-01
相关资源
最近更新 更多