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 –