У меня есть файл .txt
в моем локальном файле, и я хочу сжать этот файл в .gz и загрузить его в местоположение в HDFS.Текстовый файл не получается сжатым в HDFS
Ниже приведен код, я попробовал:
String codecClassName = args[1];
String source = args[2];
String dest = args[3];
InputStream in = new BufferedInputStream(new FileInputStream(source));
Class<?> codecClass = Class.forName(codecClassName);
Configuration conf = new Configuration();
CompressionCodec codec = (CompressionCodec)ReflectionUtils.newInstance(codecClass, conf);
FileSystem fs = FileSystem.get(URI.create(dest),conf);
OutputStream out = fs.create(new Path(dest),new Progressable() {
@Override
public void progress() {
System.out.println(".");
}
});
CompressionOutputStream outStream = codec.createOutputStream(out);
IOUtils.copyBytes(in, outStream, 4096,false);
Ниже приведены значения аргумента, переданного в этом коде:
arg1 (Название Compresser): org.apache.hadoop.io.compress.GzipCodec
арг2 (A местонахождение на моем местном диске): /home/user/Demo.txt
arg3 (Место в HDFS): hdfs://localhost:8020/user/input/Demo.gz
Когда я запускаю этот код, файл Demo.gz
создается в вышеупомянутом местоположении HDFS, но размер файла .gz равен 0 МБ.
Пожалуйста, дайте мне знать, почему файл не будет сжат и загружен в HDFS правильно.