如何在数据流中有效处理largs gzip压缩文件?

时间:2017-09-11 07:31:40

标签: java google-cloud-dataflow

我们有som批处理作业,处理压缩文件~10GB压缩和解压缩~30GB。

尝试在java中处理这个问题需要花费不合理的时间,我们正在寻找如何更有效地完成它。如果我们使用TextIO或gcs的本机java sdk来下载文件,则处理时间超过8小时,原因是由于某种原因可以扩展。很可能它不会分割文件,因为它是gzip压缩文件。

如果我解压缩文件并处理解压缩的文件,则该作业大约需要10分钟,因此大约快100倍。

我完全可以理解,处理一个gzip压缩文件可能需要一些额外的时间,但是时间长了太多了。

1 个答案:

答案 0 :(得分:1)

gzip文件不可拆分是正确的,因此Dataflow无法并行化读取每个gzip压缩输入文件。如果可能的话,在GCS中存储未压缩是最佳途径。

关于100x性能差异:您的管道在管道的未压缩版本和压缩版本中扩展到多少工作虚拟机?如果您有工作ID,我们可以在内部查找以进一步调查。