Gradle 在direct runner上运行ok时,梁管道未在Google数据流中移动

Gradle 在direct runner上运行ok时,梁管道未在Google数据流中移动,gradle,deployment,google-cloud-dataflow,apache-beam,shadowjar,Gradle,Deployment,Google Cloud Dataflow,Apache Beam,Shadowjar,我有一个梁管道运行良好的地方与DirectRunner。但是,当切换到DataFlowRunner时,作业开始了,我可以从Google DataflowWeb ui中看到流程图。但是,作业不会运行。它一直挂在那里,直到我停止工作。我使用的是光束2.10。我可以看到自动缩放调整cpu,在日志中没有异常 我认为这与我创建Jar文件的方式有关。我正在使用shadowjar在gradlebuild中创建Jar文件。使用ShadowJar的主要原因是用于mergeServiceFiles()。如果不使用m

我有一个梁管道运行良好的地方与DirectRunner。但是,当切换到DataFlowRunner时,作业开始了,我可以从Google DataflowWeb ui中看到流程图。但是,作业不会运行。它一直挂在那里,直到我停止工作。我使用的是光束2.10。我可以看到自动缩放调整cpu,在日志中没有异常

我认为这与我创建Jar文件的方式有关。我正在使用shadowjar在gradlebuild中创建Jar文件。使用ShadowJar的主要原因是用于mergeServiceFiles()。如果不使用mergeServiceFiles(),作业将在异常情况下运行,如未找到gs的文件系统

所以我从google数据流模板repo复制了单词计数,并将其打包为jar文件。它显示了同样的情况,作业开始了,但没有移动。该代码已与服务帐户凭据的最小更改相接触。我扩展了凭证的GcsOptions,而不是它原来的管道选项


尝试梁2.12、2.10。

四处挖掘,通过单击所示原木右上角的stackdrive找到完整原木。发现如下

原因:java.lang.IllegalStateException:在类路径上检测到log4j-over-slf4j.jar和绑定的slf4j-log4j12.jar,抢占StackOverflower错误。另见http://www.slf4j.org/codes.html#log4jDelegationLoop 更多细节。在org.slf4j.impl.Log4jLoggerFactory.(Log4jLoggerFactory.java:54)…

还有一个
java失败,退出状态为1
记录log4j错误下的几行。基本上java程序已经停止了,但是数据流UI仍然显示它正在流程图上运行

使用gradle构建脚本从中排除所有slf4j-log4j12
compile('org.apache.hadoop:hadoop mapreduce客户端核心:3.2.0'){exclude group:'org.slf4j',module:'slf4j-log4j12'}


其他依赖项包含slf4j-log4j12,作业开始移动。

着色jar在数据流上应该可以正常工作。事实上,它可以自动缩放也是一个好迹象。你说作业没有运行是什么意思?作业执行的结果是否会有一些不存在的输出?如果您不是作为着色jar运行数据流示例,那么它是否有效?你能把工作ID传给我吗?你能看到什么样的日志?你能分享吗?我希望管道读取一些输入的gs文件,然后排序并输出到输出的gs文件。我想我可能找到了问题的原因。对其应用修复。我通过流程图页面上的日志按钮查看日志。那边看起来都不错。但是,使用日志上方的“stackdriver”小链接。我找到了完整的日志。第一个使用数据流的项目。因此,当发现应用程序已经退出,但web ui显示正在运行时,有点失落。上面是非常常见的log4j和slfj绑定冲突。我想那会是一种痛苦。确认@Anton,在从依赖项中排除log4j之后,它工作得很好。根据描述,这听起来像一个bug,归档