我有一个使用 DirectRunner 在本地运行良好的 Beam 管道。但是,当切换到 DataFlowRunner 时,作业开始了,我可以从 Google 数据流 web ui 中看到流程图。但是,作业不会运行。它一直挂在那里,直到我停止工作。我正在使用 Beam 2.10。我可以在日志中看到自动缩放调整cpu,没有异常。
我认为这与我创建 Jar 文件的方式有关。我正在使用 shadow Jar 在 gradle build 中创建 jar 文件。使用 ShadowJar 的主要原因是用于 mergeServiceFiles()。如果不使用 mergeServiceFiles(),则作业将运行异常,例如No FileSystem found for gs。
所以我从谷歌数据流模板回购中复制了字数并将其打包为 jar 文件。它显示了同样的事情,工作开始但没有移动。该代码已对服务帐户凭据进行了最小更改。我扩展了凭证的 GcsOptions,而不是原来的 PipelineOptions。
尝试过梁 2.12、2.10。