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

Google dataflow only partly uncompressing files compressed with pbzip2

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 版本:

Parallel BZIP2 v1.1.12 [Dec 21, 2014]

bzip2 版本:

bzip2, a block-sorting file compressor. Version 1.0.6, 6-Sept-2010.

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

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

关于如何解决这个问题有什么建议吗? 这甚至可以处理用 pbzip2 压缩的文件吗?

这是调用 BZIP2 库以读取 PBZIP2 生成的文件的方式中的错误。当我输入这个时,修复正在审查中。参见 BEAM-2708