HDFS 中的压缩文件提取
Compressed File Extraction in HDFS
我在 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
。请指教是哪里的问题。
您忘记将数据从 in 复制到 out。
IOUtils.copyBytes(...)
我在 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
。请指教是哪里的问题。
您忘记将数据从 in 复制到 out。
IOUtils.copyBytes(...)