与使用 google 数据流保存在 google 存储中的普通文本文件相比,读取压缩文件时性能相对较差
Relatively poor performance when reading compressed files vis a vis normal text files kept in google storage using google dataflow
我使用 google 数据流从云存储中读取一个 11.57GB 的文件并将它们写入 google BigQuery。 30 名工人花了大约 12 分钟。
然后我压缩了同一个文件(现在大小变成了 1.06GB),然后再次使用 google 数据流从 google 存储中读取它们并将它们写入 BigQuery。现在,同样的 30 名工人大约需要 31 分钟。
除了第一个数据流作业中的输入文件未压缩但第二个数据流作业中的输入文件被压缩外,两个数据流作业都具有相同的管道选项。
当 google 数据流读取压缩文件时,性能似乎 大幅下降。
ParDo transform 和 BigQueryIO transform 在读取压缩文件时速度下降了 50% 以上。
即使我将 worker 数量增加到 200,它似乎也没有改善,因为读取同一个压缩文件并写入 bigquery 仍然需要 28 分钟
有没有办法加快读取压缩文件的整个过程?
读取压缩数据时,每个文件只能由一个worker处理;从未压缩的数据中读取时,工作可以更好地并行化。由于您只有一个文件,这就解释了您看到的性能差异。
加快速度的最佳选择是使用未压缩的输入,或使用多个较小的文件。或者,为了降低成本,您可以 运行 在读取一个压缩文件时使用更少的工作人员。
我使用 google 数据流从云存储中读取一个 11.57GB 的文件并将它们写入 google BigQuery。 30 名工人花了大约 12 分钟。
然后我压缩了同一个文件(现在大小变成了 1.06GB),然后再次使用 google 数据流从 google 存储中读取它们并将它们写入 BigQuery。现在,同样的 30 名工人大约需要 31 分钟。
除了第一个数据流作业中的输入文件未压缩但第二个数据流作业中的输入文件被压缩外,两个数据流作业都具有相同的管道选项。
当 google 数据流读取压缩文件时,性能似乎 大幅下降。
ParDo transform 和 BigQueryIO transform 在读取压缩文件时速度下降了 50% 以上。
即使我将 worker 数量增加到 200,它似乎也没有改善,因为读取同一个压缩文件并写入 bigquery 仍然需要 28 分钟
有没有办法加快读取压缩文件的整个过程?
读取压缩数据时,每个文件只能由一个worker处理;从未压缩的数据中读取时,工作可以更好地并行化。由于您只有一个文件,这就解释了您看到的性能差异。
加快速度的最佳选择是使用未压缩的输入,或使用多个较小的文件。或者,为了降低成本,您可以 运行 在读取一个压缩文件时使用更少的工作人员。