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]
然后我在两个压缩文件上运行以下管道。谷歌数据流只能部分解压压缩文件pbzip2
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日。
我正在使用dataflow SDK的2.0.0版本。
我有很多用pbzip2压缩的文件,我宁愿不改变它们被压缩的方式。
有关如何解决此问题的任何建议? 这是否甚至假设使用pbzip2压缩文件?
pbzip是CompressionTypes上列出的类型之一吗?它与bzip2有什么不同? 也许最好的是提交一个针对Beam的错误请求支持PBZIP – Pablo
我已经为此提交了一个jira问题。 Beam的开发人员应该能够解决这些问题。 – Pablo
链接:https://github.com/apache/beam/pull/3669 –