1

我想知道是否有一些最佳方法来压缩具有数百万行重复/按顺序重复的 csv 文件。每行有 4-5 个元素。唯一的行只有几百个,但因为每一个都出现了很多次,所以文件的整体大小很大。

我不熟悉 gzip、bzip2 等工具中使用的详细算法,但我在思考是否有任何方法可以指导 gzip 或 bzip2 这种模式。例如,如果我有 100 万行 a、b、c、d、e,那么在内部这可以最佳地表示为 abcde 的一个条目,如果重复次数(例如 abcde 重复 2 M 次) )。这将比说更优化,因为压缩算法尝试压缩 abcdeabcdeabcde...。我正在寻找一种通用方法来优化案例,因为这些案例中的数据采用排序的表格格式并包含重复的行/元组。

提前致谢。

4

1 回答 1

2

您应该创建自己的自定义格式。就像是:

0 -> 文件结束 1 -> 行跟随(以行尾自动终止) 2..n -> 重复上一行多次

该数字可以是一个可变长度的整数,其中字节的高位为零表示整数的结尾,一个表示还有更多字节。然后将每个字节的低七位连接起来形成整数。如此小的重复计数(< 128)只占用一个字节。更长的占用更多的字节。只要您在两端保持一致,您就可以将它们连接在最不重要的前面或最重要的前面。

一旦你以这种方式删除了重复的行,然后用 gzip 压缩。

于 2013-07-15T04:44:09.620 回答