0
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());

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

工作后的文件

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

pbzip2 版本:

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

bzip2 版本:

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

我正在使用 2.0.0 版的数据流 SDK。

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

关于如何解决这个问题的任何建议?这甚至假设可以处理使用 pbzip2 压缩的文件吗?

4

1 回答 1

2

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

于 2017-08-01T21:23:24.813 回答