我必须经常归档HDFS文件。必须使用Java代码以Bunzip格式压缩文件。现在,我做的是以下内容:
hdfs.moveToLocalFile
bzip2
命令进行bzip。 hdfs.moveFromLocalFile
。我正在使用Hadoop 1.1.2版本。是否有任何API可以直接bzip文件,没有本地副本和BZip?
现在我正在使用linux shell命令来BZip文件。有人可以帮我看看如何使用Java代码执行BZip命令吗?
答案 0 :(得分:0)
public void addFile(String source, String destination, Configuration paramConfiguration) throws IOException, URISyntaxException {
FileSystem localFileSystem = FileSystem.get(paramConfiguration);
String str1 = paramString1.substring(source.lastIndexOf('/') + 1, source.length());
if (destination.charAt(destination.length() - 1) != '/') {
destination = destination + "/" + str1;
} else {
destination = destination + str1;
}
BZip2Codec localBZip2Codec = new BZip2Codec();
String str2 = localBZip2Codec.getDefaultExtension();
Path localPath = new Path(paramString2 + str2);
CompressionOutputStream localCompressionOutputStream = localBZip2Codec.createOutputStream(localFileSystem.create(localPath));
IOUtils.copyBytes(localFileSystem.open(new Path(paramString1)), localCompressionOutputStream, 4096, true);
}