我是hdfs / hadoop的新手,需要知道如何压缩hdfs目录中的文件 HDFS://沙箱:8020 /一些/路径
我试过了
Path p = new Path("/my/path/test1.gz");
FSDataOutputStream os = fs.create(p);
GZIPOutputStream gzipOs = new GZIPOutputStream(new BufferedOutputStream(os));
Path filePath = file.getPath();
FSDataInputStream is = fs.open(filePath);
System.out.println("Writing gzip");
byte[] buffer = new byte[1024];
int len;
while((len= is.read(buffer)) != -1){
gzipOs.write(buffer, 0, len);
}
//close resources
is.close();
gzipOs.close();
但它不起作用。
有什么建议吗?提前谢谢。
答案 0 :(得分:1)
以下代码来自Tom White的权威指南。
public class StreamCompressor {
public static void main(String[] args) throws Exception {
String codecClassname = args[0];
Class<?> codecClass = Class.forName(codecClassname);
Configuration conf = new Configuration();
CompressionCodec codec = (CompressionCodec)
ReflectionUtils.newInstance(codecClass, conf);
CompressionOutputStream out = codec.createOutputStream(System.out);
IOUtils.copyBytes(System.in, out, 4096, false);
out.finish();
}
}