我使用谷歌数据流从云存储中读取11.57GB文件并将其写入谷歌BigQuery。大约需要12分钟,有30名工人。
然后我压缩了相同的文件(大小现在变成了1.06GB),然后再次使用谷歌数据流从谷歌存储中读取它们并将它们写入BigQuery。它现在需要大约31分钟,同样有30名工人。
两个数据流作业都具有相同的管道选项,但第一个数据流作业中的输入文件未压缩但输入文件在第二个数据流作业中压缩。
当google dataflow读取压缩文件时,似乎性能大幅下降。
读取压缩文件时,ParDo转换和BigQueryIO转换的速度下降了50%以上。
即使我将工作人员数量增加到200也没有改善,因为读取相同的压缩文件并写入bigquery仍需要28分钟
有没有办法在读取压缩文件时加快整个过程?
答案 0 :(得分:1)
从压缩数据中读取时,每个文件只能由一个工作人员处理;从未压缩数据中读取时,工作可以更好地并行化。由于您只有一个文件,因此可以解释您所看到的性能差异。
加快这一过程的最佳选择是使用未压缩的输入,或使用多个较小的文件。或者,为了降低成本,您可以在读取一个压缩文件时运行更少的工作程序。