Google Cloud Dataflow发布/订阅到BigQuery模板WriteSuccessfulRecords挂墙时间

时间:2018-08-16 21:43:07

标签: google-bigquery google-cloud-dataflow

当前使用标准pubsub_to_bigquery模板获得天文墙时间。仅解析约10个密钥。 WriteSuccessfulRecords显示超过11小时!

enter image description here

当我对此进行分解时,发现StreamingWrite是元凶,但是我可以立即在BigQuery中看到数据。

enter image description here

这只是一个缓冲问题(即,使缓冲区保持可用状态/长时间开放)吗?

1 个答案:

答案 0 :(得分:4)

在流模式下,由于输入是无界的,因此该步的时间将永远累积。您看到如此长的挂墙时间的原因是因为管道已经运行了9天,因此累积量越来越大。墙壁时间定义为:

  

此步骤在所有工作线程中的所有线程上初始化,处理数据,改组数据和终止所花费的大约时间。对于复合步骤,是组成步骤所花费的时间总和。

由于StreamingWrite转换对BigQuery服务进行了API调用,这很可能是管道中最昂贵的步骤(如果没有自定义转换),因为API调用会离开工作进程。

在您的情况下,每小时的挂钟秒数可以计算为 (((((11*60) + 16) * 60) + 31) / 9) / 24 = 187.92。这意味着该步骤每小时花费超过3分钟来写出该步骤中的插入内容。该步骤看起来很昂贵,因为它已经运行了很多时间(因此也积累了时间),但实际上只是按预期工作。