两个合并的 bz2 文件和一个由两个级联文件组成的 bz2 文件有什么区别?



如果我有两个文本文件,一个两个之间有什么区别

bz2一二-c>输出。bz2

猫一二|bzip2-c>输出.bz2

具体来说,我使用pbzip2生成bz2文件,将它们放在HDFS上,然后从pig中读取它们,然后点击MAPREDUCE-477。我无法从0.20版本升级我的hadoop集群,使用非并行bz2实现太慢,我想使用非块压缩算法。

有什么方法可以将连接的bz2文件转换为非连接的文件吗?或者,我该如何修改pbzip2,使其生成非连接的bz2文件?

谢谢-

压缩通常通过用较短的模式替换模式来工作。例如,如果您有"你好,再见",那么您可以将第二个"那里"替换为对第一个的引用(其中引用小于原始的5个字节)。

现在想象一下,如果你有两个文件,一个包含"你好",另一个则包含"再见"。如果连接然后压缩,那么压缩就有更多的数据可供使用,并且可以用对第一个的引用来替换第二个"there"。如果你分别压缩两个文件,然后连接,这是不可能发生的。

现在想象一下,如果你连接然后压缩,这样第二个"那里"(来自第二个文件)被替换为对第一个"那儿"(来自第一个文件)的引用;然后尝试将压缩数据拆分回2个压缩文件。你最终会得到一个2个文件,其中第二个文件引用了该文件中不存在的东西,无法解压缩。

注意:现代压缩技术比我上面描述的要复杂得多——我过度简化了很多来说明。

如果你需要并行压缩和解压缩大量数据,那么这是不可能的。相反,您需要将大量数据拆分为小块;从而可以单独地压缩/解压缩小块,并且可以并行地压缩/解压许多小块。

最新更新