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。
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。