Google数据流仅部分解压缩使用pbzip2压缩的文件

时间:2017-08-01 13:23:23

标签: google-cloud-dataflow apache-beam bzip2 apache-beam-io

seq 1 1000000 > testfile

bzip2 -kz9 testfile
mv testfile.bz2 testfile-bzip2.bz2

pbzip2 -kzb9 testfile
mv testfile.bz2 testfile-pbzip2.bz2

gsutil cp testfile gs://[bucket]
gsutil cp testfile-bzip2.bz2 gs://[bucket]
gsutil cp testfile-pbzip2.bz2 gs://[bucket]

然后我在两个压缩文件上运行以下管道。

        p.apply(TextIO.read().from(filePath).withCompressionType(TextIO.CompressionType.BZIP2))
         .apply(TextIO.
                write().
                to(filePath.substring(0, filePath.length() - 4)).
                withoutSharding());

这导致了我的存储桶的以下状态:

Files after job

正如您所看到的,pbzip2压缩的未压缩文件太小而无法正确解压缩。似乎只有第一个块未经压缩而其余部分被丢弃。

pbzip2版本:

  

Parallel BZIP2 v1.1.12 [2014年12月21日]

bzip2版本:

  

bzip2,一个块排序文件压缩器。版本1.0.6,2010年9月6日。

我使用的是2.0.0版的数据流SDK。

我有很多用pbzip2压缩的文件,我宁愿不改变它们的压缩方式。

有关如何解决此问题的任何建议? 这甚至假设使用压缩了pbzip2的文件吗?

1 个答案:

答案 0 :(得分:2)

这是如何调用BZIP2库来读取PBZIP2生成的文件的错误。当我输入时,修复程序正在审核中。请参阅BEAM-2708