如果我有两个文本文件,一个和两个,它们之间有什么区别:
bz2一二-c>out.bz2
…还有。。。
一二类| bzip2-c>out.bz2
?
具体来说,我使用pbzip2生成bz2文件,将它们放在hdfs上,然后从pig读取它们,然后点击mapreduce-477。我无法从版本0.20升级hadoop集群,使用非并行bz2实现太慢,我想使用非块压缩算法。
有没有什么方法可以将连接的bz2文件转换成非连接的文件?甚至,我该如何修改pbzip2使其生成非连接的bz2文件?
谢谢-
如果我有两个文本文件,一个和两个,它们之间有什么区别:
bz2一二-c>out.bz2
…还有。。。
一二类| bzip2-c>out.bz2
?
具体来说,我使用pbzip2生成bz2文件,将它们放在hdfs上,然后从pig读取它们,然后点击mapreduce-477。我无法从版本0.20升级hadoop集群,使用非并行bz2实现太慢,我想使用非块压缩算法。
有没有什么方法可以将连接的bz2文件转换成非连接的文件?甚至,我该如何修改pbzip2使其生成非连接的bz2文件?
谢谢-
1条答案
按热度按时间798qvoo81#
压缩通常是通过用较短的内容替换模式来工作的。例如,如果您有“hello there,goodbye there”,那么您可以将第二个“there”替换为第一个“there”的引用(其中引用小于原来的5字节)。
现在想象一下,如果您有两个文件,一个包含“hello there”,另一个包含“再见there”。如果连接然后压缩,那么压缩有更多的数据要处理,并且可以用对第一个的引用替换第二个“there”。如果您分别压缩两个文件,然后将它们连接起来,就不会发生这种情况。
现在想象一下,如果连接然后压缩,那么第二个“there”(来自第二个文件)将替换为第一个“there”(来自第一个文件)的引用;然后尝试将压缩数据拆分回2个压缩文件。最后得到的是一个2文件,其中第二个文件引用了该文件中不存在的内容,无法解压缩。
注意:现代的压缩技术比我上面描述的要复杂得多-我过度简化了很多来说明。
如果需要并行压缩和解压大量数据,则无法完成。相反,您需要将大量数据分割成小块;这样小片可以单独压缩/解压,多个小片可以并行压缩/解压。