繁体   English   中英

多次使用暂存模板进行部署时,Dataflow 作业使用相同的 BigQuery 作业 ID?

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

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

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

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

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

使用模板

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM