我在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
。请告知问题在哪里。
答案 0 :(得分:1)
您忘记将数据从in复制到out。
IOUtils.copyBytes(...)