解压缩期间如何读取压缩文件?

时间:2015-01-18 18:32:47

标签: hadoop compression gzip bzip2

如何将5 GB gzip压缩文件读入内存并进行压缩?在解压缩之前是否需要将整个文件读入内存?我的问题与处理Hadoop中的gziped文件有关,它不能像处理非压缩文件那样拆分处理。 怎么样bzip2?有什么不同吗?

谢谢,

2 个答案:

答案 0 :(得分:2)

不,5 GB不需要读入内存。如果愿意,您可以一次读取一个字节,并以这种方式解压缩。 gzip,bzip2和我所知道的所有压缩格式都是流格式。您可以读取小位并以串行方式解压缩,而不必在文件中向后移动。 (.ZIP格式最后有标题信息,因此解压缩程序通常会从那里向后搜索条目。但这不是必需的,并且.ZIP文件可以作为流进行压缩和解压缩。)

答案 1 :(得分:0)

gzip文件不可拆分,这意味着在mapreduce中总会只有1个映射器读取该文件,因此最佳实践在将其放入HDFS之前首先解压缩。 bzipped文件可拆分,它们比gzip文件更适合Hadoop。