如何在hadoop中禁用本机zlib压缩库

uklbhaso  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(712)

我有大量以gz格式存储的文件,并试图通过读取这些文件来运行map reduce程序(使用pig)。我遇到的问题是,由于数据检查,hadoop中的本机解压缩程序(zlibdecompressor)无法成功地解压缩其中的一些内容。但是我能够使用javagzipinputstream成功地读取这些文件。现在我的问题是-有没有办法禁用zlib?或者hadoop(2.7.2)中有没有其他gzip代码可以用来解压缩gzip输入文件?
错误如下

org.apache.hadoop.mapred.TaskAttemptListenerImpl: Task: attempt_1475882463863_0108_m_000022_0 - exited : java.io.IOException: incorrect data check
   at org.apache.hadoop.io.compress.zlib.ZlibDecompressor.inflateBytesDirect(Native Method)
   at org.apache.hadoop.io.compress.zlib.ZlibDecompressor.decompress(ZlibDecompressor.java:228)
   at org.apache.hadoop.io.compress.DecompressorStream.decompress(DecompressorStream.java:91)
   at org.apache.hadoop.io.compress.DecompressorStream.read(DecompressorStream.java:85)
   at java.io.InputStream.read(InputStream.java:101)
   at org.apache.hadoop.util.LineReader.fillBuffer(LineReader.java:180)
   at org.apache.hadoop.util.LineReader.readDefaultLine(LineReader.java:216)
   at org.apache.hadoop.util.LineReader.readLine(LineReader.java:174)

非常感谢你的帮助。

monwx1rj

monwx1rj1#

我自己找到了答案。可以设置以下属性以禁用所有本机库。
io.native.lib.available=false;
或者,您可以扩展org.apache.hadoop.io.compress.gzipcodec.java,以便仅删除gzipcompressor的本机实现。

相关问题