Java中的文件压缩(Hadoop DefaultCodec) - 如何使其具有人类可读性?

时间:2015-06-30 23:34:14

标签: java hadoop compression

我的文件是使用org.apache.hadoop.io.compress.DefaultCodec压缩的。我想将此文件恢复为原始格式 - 这是一种JSON格式的字符串。

我不太确定如何使用DefaultCodec documentation来实现这一目标。有人能给我一个例子,看看它会是什么样子吗?这是我到目前为止的情况,我不知道我是否走在正确的轨道上......

//grab my file (it's on S3)
S3Object fileOnS3 = s3Service.getObject("mys3bucket", "myfilename");

DefaultCodec codec = new DefaultCodec();
Decompressor decompressor = codec.createDecompressor();

//does the following line create a input stream that parses DefaultCodec into uncompressed form?
CompressionInputStream is = codec.createInputStream(fileOnS3.getDataInputStream(), decompressor);
//also, I have no idea what to do from here.

我想将未压缩的版本存储在String变量中,因为我知道该文件是一个小的单行。

1 个答案:

答案 0 :(得分:0)

我会尝试以下方法:

  1. 使用hdfs shell命令-text和unix shell解压缩文件,如下所示:
    hadoop dfs -text /path/on/hdfs/ > /local/path/for/local/raw/file
  2. 使用SequenceFileInputFormat为输入加载文件,并使用标识映射器(和零缩减器)设置为输出TextOutputFormat。
  3. 我会选择第一个选项,特别是如果你说输入文件是一个小字符串。如果要在String变量中加载此文件,可以加载文件(这似乎不必要的昂贵),或者将-text命令的输出立即存储在String中(跳过>之后的部分)。