在MapReduce中不正确地读取gzwirte(zlib)编写的.gz文件

时间:2012-10-22 03:04:46

标签: hadoop mapreduce zlib

.gz文件是由一个名为gzputs&的C程序编写的。 gzwrite。

我按gzip -l列出压缩文件内容,并发现uncompressed值不正确。此值似乎等于最新gzputsgzwrite写入.gz文件的字节数。这使ratio成为一个负面价值。

当这些.gz文件用作Map / Reduce的输入时发生错误。似乎只能在地图阶段读取.gz文件的一部分。 (部件的大小似乎等于上面的uncompressed值)。

有人可以教我如何在C程序或Map / Reduce中做什么?

1 个答案:

答案 0 :(得分:0)

问题解决了。 Map / Reduce中的读取错误似乎是a bug of GZIPInputStream

我在Internet上找到了一个类似GZIPInputStream的类,可以正确读取gz文件。然后我在hadoop中扩展和自定义了TextInputFormat和LineRecordReader。它现在有效。