多次使用暂存模板进行部署时,数据流作业是否使用相同的 BigQuery 作业 ID?

Dataflow job uses same BigQuery job ID when deploying using a staged template multiple times?

我正在尝试部署一个 Dataflow 作业,该作业按固定计划从 BigQuery 读取并写入 Cassandra。模板代码是使用 Apache Beam 和 Dataflow 库在 Java 中编写的。我已将模板暂存到 Google Cloud Storage,并配置了 Cloud Scheduler 实例以及用于触发 Dataflow 模板的 Cloud 函数。我正在为所有 Beam 和 BigQuery 依赖项使用最新版本。

但是,我发现当使用相同的暂存模板部署作业时,BigQuery 提取作业似乎总是使用相同的作业 ID,这会导致日志中显示 409 失败。 BigQuery 查询作业似乎成功了,因为查询作业 ID 附加了唯一后缀,而提取作业 ID 使用相同的前缀,但没有后缀。

我考虑了两种替代解决方案:要么使用 crontab 直接在计算引擎实例上部署管道以直接部署模板,要么调整 Cloud 功能以按计划执行与 Dataflow 管道相同的任务。理想情况下,如果有更改 Dataflow 作业中的提取作业 ID 的解决方案,那将是一个更简单的解决方案,但我不确定这是否可能?另外,如果这不可能,是否有更优化的替代解决方案?

根据附加描述,这听起来可能是未按指示使用 withTemplateCompatability() 的情况?

Usage with templates

When using read() or readTableRows() in a template, it's required to specify BigQueryIO.Read.withTemplateCompatibility(). Specifying this in a non-template pipeline is not recommended because it has somewhat lower performance.