【问题标题】:Beam / DataFlow unexpected error ProtocolMessageEnum not implemented when using DataFlowRunner使用 DataFlowRunner 时未实现 Beam / DataFlow 意外错误 ProtocolMessageEnum
【发布时间】:2019-01-14 10:58:21
【问题描述】:

在本地运行我的 Beam 管道时,一切都按预期工作,但是当尝试在 DataflowRunner 上运行它时,我突然收到以下错误。老实说,我什至不知道从哪里开始评估它,因为 DataflowRunner 似乎是一个黑匣子。

Jan 14, 2019 11:26:51 AM org.apache.beam.runners.dataflow.DataflowRunner fromOptions
INFO: PipelineOptions.filesToStage was not specified. Defaulting to files from the classpath: will stage 165 files. Enable logging at DEBUG level to see which files will be staged.
Exception in thread "main" java.lang.IncompatibleClassChangeError: Class org.apache.beam.model.pipeline.v1.RunnerApi$StandardPTransforms$Primitives does not implement the requested interface com.google.protobuf.ProtocolMessageEnum
        at org.apache.beam.runners.core.construction.BeamUrns.getUrn(BeamUrns.java:27)
        at org.apache.beam.runners.core.construction.PTransformTranslation.<clinit>(PTransformTranslation.java:58)
        at org.apache.beam.runners.core.construction.UnconsumedReads$1.visitValue(UnconsumedReads.java:49)
        at org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:666)
        at org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:649)
        at org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:649)
        at org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:649)
        at org.apache.beam.sdk.runners.TransformHierarchy$Node.access$600(TransformHierarchy.java:311)
        at org.apache.beam.sdk.runners.TransformHierarchy.visit(TransformHierarchy.java:245)
        at org.apache.beam.sdk.Pipeline.traverseTopologically(Pipeline.java:458)
        at org.apache.beam.runners.core.construction.UnconsumedReads.ensureAllReadsConsumed(UnconsumedReads.java:40)
        at org.apache.beam.runners.dataflow.DataflowRunner.replaceTransforms(DataflowRunner.java:868)
        at org.apache.beam.runners.dataflow.DataflowRunner.run(DataflowRunner.java:660)
        at org.apache.beam.runners.dataflow.DataflowRunner.run(DataflowRunner.java:173)
        at org.apache.beam.sdk.Pipeline.run(Pipeline.java:313)
        at org.apache.beam.sdk.Pipeline.run(Pipeline.java:299)
        at (my code: pipe.run().waitUntilFinish();) 

【问题讨论】:

  • 你能发布你正在使用的命令行吗?检查数据流运行器的管道选项文档,您可能遗漏了一些东西:cloud.google.com/dataflow/docs/guides/specifying-exec-params(例如 filesToStage)
  • 如果您在管道选项中使用不受支持的字符,可能会发生类似情况的另一个潜在原因,例如作业名称中的冒号。如果您正在做类似的事情,请尝试使用字母数字。

标签: protocol-buffers google-cloud-dataflow apache-beam dataflow


【解决方案1】:

检查梁等的版本并尽可能升级您的依赖项。

我有同样的错误,看到你得到这个错误后,我认为它一定是依赖冲突,因为它以前不存在。

我正在使用 scio 部署到数据流,并且只是引用了他们正在使用的内容。 https://github.com/spotify/scio/blob/v0.7.1/build.sbt 我也更新了番石榴和 protobuf。

我知道你正在使用 java,但尝试将 beam 更新到 2.9.0,也许还有 guava、protobuf...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    相关资源
    最近更新 更多