从Flink BucketingSink生成的有效长度文件中恢复压缩文件

时间:2019-04-19 17:58:30

标签: gzip apache-flink

我正在使用Flink BucketingSink的自定义Gzip压缩编写器在hdfs上写入压缩文本文件。我想确保水槽是一次。在我的案例中,hadoop <2.7,如果作业有时失败,则BucketingSink将生成一个有效长度的文件,记录该文件的有效字节长度。截断纯文本文件很容易,但是gzip压缩文件有很大的不同,将文件截断为有效长度会损坏gzip。但是使用bash应用程序“ zcat”可以显示数据而无需验证格式和crc32。

但是为了恢复gz文件有效,现在我需要执行一些步骤:1.下载所有失败的gz文件2.按有效长度截断它们。 3. zcat截断的gz文件并重定向到文本文件。 4.使用gzip重新压缩文本文件。 5.将修改后的文件上传到hdfs

该方法非常慢,因为我可能有数百个文件来完成这些工作。有什么好主意可以做我的工作吗?我认为某些并行分布式方法可能有效。

0 个答案:

没有答案