Hadoop gzip压缩文件

我是hadoop的新手,并试图处理维基百科转储。 它是一个6.7 GB的gzip压缩xml文件。 我读到hadoop支持gzip压缩文件,但只能由mapper在单个作业上处理,因为只有一个映射器可以解压缩它。 这似乎对处理有限制。 还有其他选择吗? 比如将xml文件解压缩并拆分成多个块并用gzip重新压缩它们。

我从http://researchcomputing.blogspot.com/2008/04/hadoop-and-compressed-files.html上读到了关于hadoop gzip的内容。

谢谢你的帮助。

由于此编解码器的工作方式,无法拆分使用GZIP编解码器压缩的文件。 Hadoop中的单个SPLIT只能由单个映射器处理; 所以单个GZIP文件只能由一个Mapper处理。

绕过这种限制至少有三种方法:

  1. 作为预处理步骤:解压缩文件并使用可拆分编解码器(LZO)重新压缩
  2. 作为预处理步骤:解压缩文件,拆分为较小的集并重新压缩。 ( 见这个 )
  3. 将这个补丁用于Hadoop(我写的),它可以解决这个问题: Splittable Gzip

HTH

这是HDFS中最大的错误理解之一。

压缩为gzip文件的文件不能被MapReduce拆分,但这并不意味着GZip作为编解码器在HDFS中没有任何价值且无法拆分。

作为编解码器的GZip可以与RCFiles,序列文件,Arvo文件以及更多文件格式一起使用。 当Gzip编解码器在这些可拆分格式中使用时,您可以获得Gzip加上可拆分组件的出色压缩和非常好的速度。

由于编解码器的限制,GZIP文件无法以任何方式进行分区。 6.7GB真的不是那么大,所以只需在一台机器上解压缩(它需要不到一个小时)并将XML复制到HDFS。 然后,您可以在Hadoop中处理Wikipedia XML。

Cloud9包含一个WikipediaPageInputFormat类,您可以使用它来读取Hadoop中的XML。

为什么不用它来解压缩并使用Splittable LZ压缩呢?

http://blog.cloudera.com/blog/2009/11/hadoop-at-twitter-part-1-splittable-lzo-compression/