如何Bunzip存储的文件

时间:2014-05-12 08:33:57

标签: java hadoop hdfs bzip2

我必须经常归档HDFS文件。必须使用Java代码以Bunzip格式压缩文件。现在,我做的是以下内容:

  1. 将输入文件移至本地位置hdfs.moveToLocalFile
  2. 使用bzip2命令进行bzip。
  3. 将.bz2文件移至HDFS到另一个位置hdfs.moveFromLocalFile
  4. 我正在使用Hadoop 1.1.2版本。是否有任何API可以直接bzip文件,没有本地副本和BZip?

    现在我正在使用linux shell命令来BZip文件。有人可以帮我看看如何使用Java代码执行BZip命令吗?

1 个答案:

答案 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);
}