Google bigquery Google云数据流发布/订阅到BigQuery模板WriteSuccessfulRecords墙时间

Google bigquery Google云数据流发布/订阅到BigQuery模板WriteSuccessfulRecords墙时间,google-bigquery,google-cloud-dataflow,Google Bigquery,Google Cloud Dataflow,当前使用标准pubsub\u to\u bigquery模板获取天文墙时间。仅解析大约10个键WriteSuccessfulRecords显示时间超过11小时 当我破解这个问题时,我发现StreamingWrite是罪魁祸首,但是我可以在BigQuery中立即看到数据 这只是一个缓冲问题(即保持缓冲区长时间可用/打开)还是我应该关注的问题?在流模式下,由于输入是无限的,因此步骤的墙时间将永远累积。你之所以看到如此高的壁厚时间是因为管道已经运行了9天,因此累积量越来越大。墙时间定义为: 此步骤

当前使用标准
pubsub\u to\u bigquery
模板获取天文墙时间。仅解析大约10个键<代码>WriteSuccessfulRecords显示时间超过11小时

当我破解这个问题时,我发现
StreamingWrite
是罪魁祸首,但是我可以在
BigQuery
中立即看到数据


这只是一个缓冲问题(即保持缓冲区长时间可用/打开)还是我应该关注的问题?

在流模式下,由于输入是无限的,因此步骤的墙时间将永远累积。你之所以看到如此高的壁厚时间是因为管道已经运行了9天,因此累积量越来越大。墙时间定义为:

此步骤中在所有工作线程中初始化、处理数据、洗牌数据和终止所有线程上花费的大致时间。对于组合步骤,组件步骤中花费的时间总和

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

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

你能粘贴一些代码吗?解析到发布/订阅中并馈送到数据流的数据是简单的键/值:“keyA”:“valueA”,“keyB”:“valueB”,“keyC”:“valueC”,“keyD”:“value”然后将其插入BigQueryWhat long you running the pipeline and多少条记录发布到pipeline?@RyanMcDowell管道已经运行了9天,每分钟持续收到23条记录(IoT数据进来)我真的不想看到数据-我想看看提供这些结果的管道是如何准确配置的。感谢您的回复。有没有办法确定步骤处理每条消息的平均时间?您将无法编辑核心转换来完成此操作,但您可以在自己的自定义ParDo和转换中使用Metrics API和分发度量()来完成此操作。您可以在Metrics API()的单元测试中看到此功能的一些示例代码,
/9
/24
从何而来?是否有其他文档资源实际指定了“墙时间”?@Cristian——等式的第一部分将
StreamingWrite
步骤的墙时间以秒为单位<代码>11小时*60分钟一小时获取分钟数。然后,我们将该步骤的
16分钟
添加到该结果中。然后我们再次乘以
60
,再加上
31
,得到以秒为单位的总时间。然后,由于管道已经运行了
9天
,我们除以
9
,然后除以
24
,以小时为单位得到细分。在运行数据流作业时,侧边栏上有一个帮助工具提示,它解释了墙时间。我已经看过了,它确切地说明了您在回答中引用的内容。但这并不容易理解,而且它对墙时间的定义与传统的定义不同,这要感谢分解!