.gz文件是由一个名为gzputs&的C程序编写的。 gzwrite。
我按gzip -l
列出压缩文件内容,并发现uncompressed
值不正确。此值似乎等于最新gzputs
或gzwrite
写入.gz文件的字节数。这使ratio
成为一个负面价值。
当这些.gz文件用作Map / Reduce的输入时发生错误。似乎只能在地图阶段读取.gz文件的一部分。 (部件的大小似乎等于上面的uncompressed
值)。
有人可以教我如何在C程序或Map / Reduce中做什么?
答案 0 :(得分:0)
问题解决了。 Map / Reduce中的读取错误似乎是a bug of GZIPInputStream。
我在Internet上找到了一个类似GZIPInputStream的类,可以正确读取gz文件。然后我在hadoop中扩展和自定义了TextInputFormat和LineRecordReader。它现在有效。