Java Beam WordCount Docker映像无法在Flink Runner上启动,AvroCoderregistrar不是子类型异常

Java Beam WordCount Docker映像无法在Flink Runner上启动,AvroCoderregistrar不是子类型异常,java,apache-flink,apache-beam,Java,Apache Flink,Apache Beam,我正在使用Flink 1.10.1和Beam版本2.22.0。使用“mvn包-Pflink runner”构建了Beam字数计算示例,当提交到本地运行的Flink群集时,该示例运行良好 现在,按照Beam WordCount示例中的说明构建docker映像,并在尝试启动作业群集时失败,出现以下Avro异常: Caused by: java.util.ServiceConfigurationError: org.apache.beam.runners.core.construction.Coder

我正在使用Flink 1.10.1和Beam版本2.22.0。使用“mvn包-Pflink runner”构建了Beam字数计算示例,当提交到本地运行的Flink群集时,该示例运行良好

现在,按照Beam WordCount示例中的说明构建docker映像,并在尝试启动作业群集时失败,出现以下Avro异常:

Caused by: java.util.ServiceConfigurationError: org.apache.beam.runners.core.construction.CoderTranslatorRegistrar: Provider org.apache.beam.runners.core.construction.AvroCoderRegistrar not a subtype
        at java.util.ServiceLoader.fail(ServiceLoader.java:239)
        at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
        at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376)
        at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
        at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
        at org.apache.beam.runners.core.construction.CoderTranslation.loadCoderURNs(CoderTranslation.java:52)
        at org.apache.beam.runners.core.construction.CoderTranslation.<clinit>(CoderTranslation.java:44)
        at org.apache.beam.runners.core.construction.SdkComponents.registerCoder(SdkComponents.java:269)
        at org.apache.beam.runners.core.construction.PCollectionTranslation.toProto(PCollectionTranslation.java:35)
        at org.apache.beam.runners.core.construction.SdkComponents.registerPCollection(SdkComponents.java:224)
        at org.apache.beam.runners.core.construction.PTransformTranslation.translateAppliedPTransform(PTransformTranslation.java:475)
        at org.apache.beam.runners.core.construction.ParDoTranslation$ParDoTranslator.translate(ParDoTranslation.java:168)
        at org.apache.beam.runners.core.construction.PTransformTranslation.toProto(PTransformTranslation.java:234)
        at org.apache.beam.runners.core.construction.ParDoTranslation.getParDoPayload(ParDoTranslation.java:731)
        at org.apache.beam.runners.core.construction.ParDoTranslation.isSplittable(ParDoTranslation.java:746)
        at org.apache.beam.runners.core.construction.PTransformMatchers$6.matches(PTransformMatchers.java:266)
        at org.apache.beam.sdk.Pipeline$2.visitPrimitiveTransform(Pipeline.java:284)
        at org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:665)
        at org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:657)
        at org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:657)
        at org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:657)
        at org.apache.beam.sdk.runners.TransformHierarchy$Node.access$600(TransformHierarchy.java:317)
        at org.apache.beam.sdk.runners.TransformHierarchy.visit(TransformHierarchy.java:251)
        at org.apache.beam.sdk.Pipeline.traverseTopologically(Pipeline.java:463)
        at org.apache.beam.sdk.Pipeline.replace(Pipeline.java:262)
        at org.apache.beam.sdk.Pipeline.replaceAll(Pipeline.java:212)
        at org.apache.beam.runners.flink.FlinkPipelineExecutionEnvironment.translate(FlinkPipelineExecutionEnvironment.java:115)
        at org.apache.beam.runners.flink.FlinkRunner.run(FlinkRunner.java:82)
        at org.apache.beam.sdk.Pipeline.run(Pipeline.java:317)
        at org.apache.beam.sdk.Pipeline.run(Pipeline.java:303)
        at org.apache.beam.examples.WordCount.runWordCount(WordCount.java:185)
        at org.apache.beam.examples.WordCount.main(WordCount.java:193)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:321)
        at org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:205)
        at org.apache.flink.client.program.OptimizerPlanEnvironment.getPipeline(OptimizerPlanEnvironment.java:80)
        ... 12 more
原因:java.util.ServiceConfigurationError:org.apache.beam.runners.core.construction.CoderTranslatorRegistrar:Provider org.apache.beam.runners.core.construction.AvroCoderRegistrar不是子类型
在java.util.ServiceLoader.fail处(ServiceLoader.java:239)
在java.util.ServiceLoader.access$300(ServiceLoader.java:185)
位于java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376)
位于java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
位于java.util.ServiceLoader$1.next(ServiceLoader.java:480)
位于org.apache.beam.runners.core.construction.CoderTranslation.loadCoderURNs(CoderTranslation.java:52)
位于org.apache.beam.runners.core.construction.CoderTranslation.(CoderTranslation.java:44)
位于org.apache.beam.runners.core.construction.SdkComponents.registerCoder(SdkComponents.java:269)
位于org.apache.beam.runners.core.construction.PCollectionTranslation.toProto(PCollectionTranslation.java:35)
位于org.apache.beam.runners.core.construction.SdkComponents.RegisterCollection(SdkComponents.java:224)
位于org.apache.beam.runners.core.construction.ptransformtransation.translateAppliedPTransform(ptransformtransation.java:475)
位于org.apache.beam.runners.core.construction.ParDoTranslation$ParDoTranslator.translate(ParDoTranslation.java:168)
位于org.apache.beam.runners.core.construction.PTransformTranslation.toProto(PTransformTranslation.java:234)
位于org.apache.beam.runners.core.construction.ParDoTranslation.getParDoPayload(ParDoTranslation.java:731)
位于org.apache.beam.runners.core.construction.ParDoTranslation.isSplittable(ParDoTranslation.java:746)
位于org.apache.beam.runners.core.construction.PTransformMatchers$6.matches(PTransformMatchers.java:266)
位于org.apache.beam.sdk.Pipeline$2.visitPrimitiveTransform(Pipeline.java:284)
位于org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:665)
位于org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:657)
位于org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:657)
位于org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:657)
位于org.apache.beam.sdk.runners.TransformHierarchy$Node.access$600(TransformHierarchy.java:317)
访问org.apache.beam.sdk.runners.TransformHierarchy.visit(TransformHierarchy.java:251)
在org.apache.beam.sdk.Pipeline.traversetopological上(Pipeline.java:463)
位于org.apache.beam.sdk.Pipeline.replace(Pipeline.java:262)
位于org.apache.beam.sdk.Pipeline.replaceAll(Pipeline.java:212)
位于org.apache.beam.runners.flink.FlinkPipelineExecutionEnvironment.translate(FlinkPipelineExecutionEnvironment.java:115)
位于org.apache.beam.runners.flink.FlinkRunner.run(FlinkRunner.java:82)
位于org.apache.beam.sdk.Pipeline.run(Pipeline.java:317)
位于org.apache.beam.sdk.Pipeline.run(Pipeline.java:303)
位于org.apache.beam.examples.WordCount.runWordCount(WordCount.java:185)
位于org.apache.beam.examples.WordCount.main(WordCount.java:193)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.apache.flink.client.program.PackagedProgram.callmain方法(PackagedProgram.java:321)
位于org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:205)
位于org.apache.flink.client.program.OptimizerPlanEnvironment.getPipeline(OptimizerPlanEnvironment.java:80)
... 还有12个
有什么线索/提示吗?这里可能出了什么问题?
谢谢

我可以找到一个AvroGenericCoderRegistrar,但找不到AVROCODER。那么,是否存在指定提供者的配置文件?@GertKommer我的Java项目的pom.xml有以下条目:-2.22.0-beam-runners-flink-1.10 org.apache.beam${flink.artifact.name}${beam.version}运行时。。。。。。。。。。。你能分享以上条目的工作版本吗?我使用的是flink 1.10。除此之外,还有其他地方可以检查WordCount Java的提供者配置文件吗?提供者位于着色jar中的
META-INF/services/org.apache.beam.runners.core.construction.CoderTranslatorRegistrar
中。我从java quickstart构建了maven示例,并在我的eclipse中安装了maven。生成的着色jar包含该通用提供程序,而不是错误所涉及的提供程序。您的
META-INF/serv….
文件中有什么内容?顺便说一句,我看到您发布了另一个关于同一项目但不同版本的问题。这是否意味着该问题已被放弃?对不起,这是我的错误。这两个版本的Beam版本均为2.21.0。这个问题是通过从flink/lib目录中删除'flink-python_2.12-*.jar'来解决的——这个jar引用了avrocoderegistrar——因为我不需要flink/Beam的python支持,所以我现在手动删除了它,并构建了docker映像。这就解决了上述问题。谢谢你的帮助。我可以找到一个AvroGenericCoderRegistrar,但找不到AVROCODER。那么,是否存在指定提供者的配置文件?@GertKommer the pom.xml f