我是hadoop的新手并试图处理维基百科转储。它是一个6.7 GB的gzip压缩xml文件。我读到hadoop支持gzip压缩文件,但只能由mapper在单个作业上处理,因为只有一个映射器可以解压缩它。这似乎限制了处理。还有其他选择吗?比如将xml文件解压缩并拆分成多个块并用gzip重新压缩它们。
我从http://researchcomputing.blogspot.com/2008/04/hadoop-and-compressed-files.html
中读到了关于hadoop gzip的内容感谢您的帮助。
答案 0 :(得分:20)
由于此编解码器的工作方式,无法拆分使用GZIP编解码器压缩的文件。 Hadoop中的单个SPLIT只能由单个映射器处理;所以单个GZIP文件只能由一个Mapper处理。
至少有三种方法可以解决这个限制:
HTH
答案 1 :(得分:8)
这是HDFS中最大的错误理解之一。
是否压缩为gzip文件的文件不能被MapReduce拆分,但这并不意味着GZip作为编解码器在HDFS中没有价值且无法拆分。
作为编解码器的GZip可以与RCFiles,序列文件,Arvo文件以及更多文件格式一起使用。当Gzip编解码器在这些可拆分格式中使用时,您可以获得Gzip加上可拆分组件的出色压缩和非常好的速度。
答案 2 :(得分:3)
由于编解码器的限制,无法以任何方式对GZIP文件进行分区。 6.7GB真的不是那么大,所以只需在一台机器上解压缩(它需要不到一个小时)并将XML复制到HDFS。然后,您可以在Hadoop中处理Wikipedia XML。
Cloud9包含一个WikipediaPageInputFormat类,您可以使用它来读取Hadoop中的XML。
答案 3 :(得分:0)
为什么不用它来解压缩并使用Splittable LZ压缩?m
http://blog.cloudera.com/blog/2009/11/hadoop-at-twitter-part-1-splittable-lzo-compression/