protocol-buffers - 使用 DataFlowRunner 时未实现 Beam / DataFlow 意外错误 ProtocolMessageEnum
问题描述
在本地运行我的 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();)
解决方案
检查梁等的版本并在可能的情况下升级您的依赖项。
我有同样的错误,看到你得到这个错误后,我认为它一定是依赖冲突,因为它以前不存在。
我正在使用 scio 部署到数据流,并且只是引用了他们正在使用的内容。https://github.com/spotify/scio/blob/v0.7.1/build.sbt 我也更新了番石榴和protobuf。
我知道您使用的是 java,但尝试将 beam 更新到 2.9.0,也许还有 guava、protobuf ...
推荐阅读
- kendo-ui - Kendo UI Grid,从 DataItem 获取列索引或名称
- fabricjs - 在fabricjs的文本区域放置标签
- python - 如何使用 w2v 创建单词之间的相似度矩阵
- reactjs - 如何将我当前的反应项目(webapp)转换为移动应用程序?
- node.js - discord js从用户消息中获取参数并在变量中使用它们显示为未定义
- c# - 使用表达式创建 List.Any
- eclipse - 无法使字段私有最终 java.util.Comparator java.util.TreeMap.comarator 可访问:java.base 不会“打开 java.util”到未命名的模块
- ios - 如何使用 react native 自定义键盘
- java - 为什么 maven 在 Mac Big Sur 中没有显示正确的操作系统版本
- freepascal - 连接 g77 和自由帕斯卡