import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import java.io.BufferedOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class HdfsZipToHdfs {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
// HDFS 输入文件路径
Path inputPath = new Path("/path/to/input/file.txt");
// HDFS 输出 ZIP 文件路径
Path outputZipPath = new Path("/path/to/output/file.zip");
try (InputStream in = fs.open(inputPath);
OutputStream out = fs.create(outputZipPath);
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(out))) {
ZipEntry zipEntry = new ZipEntry(inputPath.getName());
zos.putNextEntry(zipEntry);
// 使用 IOUtils.copyBytes 进行流的复制
IOUtils.copyBytes(in, zos, conf);
zos.closeEntry();
}
fs.close();
}
}