忽略数据排序顺序的压缩算法/策略

时间:2018-10-08 16:28:16

标签: csv sorting data-science compression

磁盘上数据的排序顺序通常会影响串行压缩的效率 自然应该将数据视为无序的情况。

对于一个人为的示例,假设您必须压缩一个较大的文本文件(> 5GB) 包含数百万行极其冗余的低基数值。

SomeModerateLengthString
SomeModerateLengthString
SomeModerateLengthString
[...100 thousand repetitions...]
AnotherDifferentString
AnotherDifferentString
[...30 thousand repetitions...]
AThirdStringQuiteDifferentFromTheOthers
AThirdStringQuiteDifferentFromTheOthers
[...75 thousand repetitions...]
[...more repetitions like above, for several hundred more strings]

显然,这对于gzip,lzma或任何串行文件都可以很好地压缩 压缩机。您可以使用Shell脚本对它进行简单的运行长度编码。

但是,如果您收到此文件的行以随机顺序排序, 压缩受苦。行字符串本身可以字典压缩, 但是大多数存储空间都浪费在保留精确的位置(不可压缩 随机)对行进行排序,即使该顺序完全无关紧要。

在这里,解决方案显而易见:在压缩之前对文件进行排序。但在 在现实生活中,可能很难找到最有效的排序顺序。多余的 上面的数据可能是CSV中的第二列,其中第一列是 高基数5位整数。

是否有任何压缩算法会忽略压缩的要求 记录必须以收到的相同顺序返回,并使用该记录进行优化 灵活性吗?

如果没有,是否有什么好的策略可以优化排序/分区 无序数据对串行压缩器的好处?我在想目标 将具有低Levenshtein编辑距离的记录聚在一起 文件的一部分,但我不确定。

0 个答案:

没有答案
相关问题