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



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

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

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

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

模板用法

在模板中使用 read(( 或 readTableRows(( 时,需要指定 BigQueryIO.Read.withTemplateCompatibility ((。不建议在非模板管道中指定此项,因为它的性能会降低一些。

最新更新