HDFS中的压缩文件提取

时间:2015-01-20 03:11:01

标签: hadoop hdfs bigdata codec

我在HDFS中上传了一个.gz文件,我正在尝试提取该文件的内容并将其放入HDFS的同一目录中。这是我试过的代码:

final String uri = "hdfs://localhost:8020/user/input1/output.gz";
    Path pt=new Path(uri);
    FileSystem fs = FileSystem.get(new Configuration());

    Configuration conf = new Configuration();
    CompressionCodecFactory factory = new CompressionCodecFactory(conf);
    CompressionCodec codec = factory.getCodec(pt);

    if(codec == null){
        System.err.println("No Codec found !!!");
        System.exit(1);
    }

    String outputUri = CompressionCodecFactory.removeSuffix(uri, codec.getDefaultExtension());
    InputStream in = null;
    OutputStream out = null;
    try {
        in = codec.createInputStream(fs.open(pt));
        out = fs.create(new Path(outputUri));
    } finally{
        IOUtils.closeStream(in);
        IOUtils.closeStream(out);
    }

文件已解压缩,但内容为0 B。请告知问题在哪里。

1 个答案:

答案 0 :(得分:1)

您忘记将数据从in复制到out。

IOUtils.copyBytes(...)