【问题标题】:Why is total time taken by Google Dataflow more than sum of times taken by individual steps为什么 Google Dataflow 所用的总时间超过各个步骤所用时间的总和
【发布时间】:2017-12-15 07:55:17
【问题描述】:

我真的无法理解为什么数据流作业的总运行时间比单个步骤花费的时间要长得多。

例如,图片中数据流的总运行时间为 2 分 39 秒。而在单个步骤中花费的时间仅为 10 秒。即使我们考虑在设置和销毁阶段所花费的时间,也有 149 秒的差异,这太多了。

是否有其他方法可以读取各个阶段的时间,或者我错过了其他东西?

谢谢

【问题讨论】:

  • 当您运行作业时,Dataflow 会花费几分钟 (2-5) 来分配工作机器,并设置它们以运行您的作业。

标签: google-app-engine google-cloud-platform google-cloud-dataflow


【解决方案1】:

根据我的说法,2 分 39 秒的时间很好。您正在执行此操作,读取文件,然后 pardo,然后将其写入 bigquery。

这个时间计算涉及到很多因素。

  1. 您需要处理多少数据。即 - 在您的情况下,我认为您处理的数据不多。
  2. 你在做什么计算。即您的 pardo 步骤只有 3 秒,因此除了少量数据外,pardo 也没有太多计算。
  3. 将其写入 bigquery - 即在您的情况下只需要 5 秒。

因此数据流的创建和销毁阶段保持不变。在您的情况下,它是 149 秒。你的工作只需要 10 秒,这取决于我上面解释的所有三个因素。

现在假设您必须处理 200 万条记录,并且每个记录转换需要 10 秒。在这种情况下,单节点数据流加载作业的时间会更长,即 10 秒 * 200 万条记录。

因此,在这种情况下,149 秒并不代表整个作业完成时间,因为所有记录处理 0 秒 * 200 万条记录都考虑了 149 秒。

希望这些信息能帮助您了解时间安排。

【讨论】:

  • 你知道当你把这 149 秒放在 200 万条记录的角度来看时,它确实把事情说得很清楚:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 2019-03-08
  • 1970-01-01
  • 2021-10-25
  • 2019-07-01
  • 1970-01-01
相关资源
最近更新 更多