重启SpannerToBigQuery Flex模板时如何避免GCP Dataflow数据丢失
Spanner变更流同步BigQuery架构变更时的数据丢失问题
我使用官方Flex模板--template-file-gcs-location=gs://dataflow-templates-us-central1/latest/flex/Spanner_Change_Streams_to_BigQuery,将Spanner变更流的数据流式同步到BigQuery。
现状
- Spanner架构会不定期变更
- 每次Spanner架构变更时,需手动同步修改BigQuery对应表结构
- 该模板使用Splittable DoFunc,无法执行drain操作,只能直接取消当前Dataflow管道
- 旧管道关闭到新管道启动的间隙会出现数据丢失
求助问题
我考虑过用水印指标启动新管道的方案,但不确定这个方法是否正确,也不清楚具体操作步骤。有没有更简便的方法能避免架构变更时的数据丢失?
另外,我尝试通过const result = await dataflow.projects.jobs.getMetrics(request);获取所有水印,但得到了模板每个阶段的多个水印(示例如下)。请问这种获取方式是否正确?如果正确,如何基于这些多阶段水印启动新的Flex模板?
DataWatermark F174 1697517770000000 { name: { origin: 'dataflow/v1b3', name: 'DataWatermark', context: { execution_step: 'F174' } }, scalar: 1697517770000000, updateTime: '2023-10-17T04:43:06.711Z' } DataWatermark F174 1697517770000000 { name: { origin: 'dataflow/v1b3', name: 'DataWatermark', context: { execution_step: 'F175', tentative: 'true' } }, scalar: 1697517770000000, updateTime: '2023-10-17T04:43:06.711Z' } DataWatermark F175 1697517770000000 { name: { origin: 'dataflow/v1b3', name: 'DataWatermark', context: { execution_step: 'F175' } }, scalar: 1697517770000000, updateTime: '2023-10-17T04:43:06.711Z' } DataWatermark F175 1697517770000000
内容的提问来源于stack exchange,提问作者Michael Brenndoerfer
相关产品推荐
相关产品推荐

