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 压缩的文件吗?