hadoop - 压缩 HDFS 文件时出现 IOException

标签 hadoop gzip codec

我想压缩 HDFS 中当前存在的文件并删除未压缩的文件。这是代码,但它因 IOException 而出错。关于为什么会发生这种情况的任何指示?

CompressionCodecFactory ccf = new CompressionCodecFactory(conf);
CompressionCodec codec = ccf.getCodecByClassName(GzipCodec.class.getName());                        
InputStream inpStrm = codec.createInputStream(fs.open(infoFilePath));
OutputStream compressedOutputSream = codec.createOutputStream(fs.create( new Path( infoFile + "." + codec.getDefaultExtension()) ));

IOUtils.copyBytes(inpStrm, compressedOutputSream, conf);

但它因 IOException 而出错:

Exception in thread "main" java.io.IOException: incorrect header 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.io.IOUtils.copyBytes(IOUtils.java:78)
    at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:52)
    at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:98)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

最佳答案

除了您新创建的文件之外,可能还有一些看起来像压缩过的文件并没有被压缩。当扩展名为 .gz 的文件是纯文本文件时,我遇到了这个问题。不同的 Hadoop 版本以不同的方式处理这个问题。显然,涉及到文件名。

关于hadoop - 压缩 HDFS 文件时出现 IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25295029/

相关文章:

hadoop - 修复-运行hadoop作业时警告 “Use GenericOptionsParser for parsing the arguments”?

hadoop - 矩阵乘法在Hadoop中的实际应用

java - GZIP 不接受文件流

c++ - boost gzip_compressor 和 gzip_decompressor

android - 如何在android中使用CSipSimple的G729

image - Flutter-编解码器对象中的图像对象

hadoop - 使用 HCFS 读取 JSON 换行文件

hadoop - Gradle 用 logback 替换传递依赖 log4j

c++ - zlib gzread函数读取.gz文件时出错?

linux - FFMPEG升级并安装新的依赖项