我想知道是否有一些压缩csv文件的最佳方法,该文件有数百万行重复/顺序重复。每行有4-5个元素。只有几百个唯一的行,但由于每个行都出现了很多次,因此文件的整体大小很大。
我不熟悉gzip,bzip2等工具中使用的详细算法,但我在想是否有任何方法可以指示gzip或bzip2这种模式。例如,如果我有100万行a,b,c,d,e那么在内部这可以最佳地表示为abcde的条目和数字的计数(如果重复次数)(例如abcde重复2 M次) )。这比压缩算法尝试压缩abcdeabcdeabcde更加优化....我正在寻找一种通用的方法来优化案例,其中数据是以排序的表格格式并包含重复的行/元组。
提前致谢。
答案 0 :(得分:2)
您应该创建自己的自定义格式。类似的东西:
0 - >文件结束 1 - >行跟随(自行终止与行尾) 2..n - >多次重复上一行
该数字可以是一个可变长度的整数,其中字节的高位为零表示整数的结束,一个指示有更多的字节。然后连接每个字节的低七位以产生整数。如此小的重复计数(<128)仅占用一个字节。较长的需要更多的字节。只要你在两端都是一致的,你可以将它们连接到最低有效率或最高有效率。
以这种方式删除重复的行后,使用gzip压缩。