0

我正在尝试使用 MR 作业生成 TFRecord,但遇到一个我无法理解的错误,似乎找不到读取列表的方法?当我尝试构建遵循 tensorflow 中的 hadoop 示例的示例时,它会抛出以下内容。谁能指出一个方法?谢谢

2018-06-06 23:49:44,386 FATAL [main] org.apache.hadoop.mapred.YarnChild: Error running child : java.lang.NoSuchMethodError: com.google.protobuf.Descriptors$Descriptor.getOneofs()Ljava/util/List;
at com.google.protobuf.GeneratedMessageV3$FieldAccessorTable.<init>(GeneratedMessageV3.java:1704)
at org.tensorflow.example.FeatureProtos.<clinit>(FeatureProtos.java:104)
at org.tensorflow.example.Feature.internalGetFieldAccessorTable(Feature.java:109)
at com.google.protobuf.GeneratedMessageV3.getAllFieldsMutable(GeneratedMessageV3.java:124)
at com.google.protobuf.GeneratedMessageV3.getAllFields(GeneratedMessageV3.java:200)
at com.google.protobuf.TextFormat$Printer.print(TextFormat.java:272)
at com.google.protobuf.TextFormat$Printer.access$400(TextFormat.java:248)
at com.google.protobuf.TextFormat.print(TextFormat.java:71)
at com.google.protobuf.TextFormat.printToString(TextFormat.java:118)
at com.google.protobuf.AbstractMessage.toString(AbstractMessage.java:106)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
4

1 回答 1

0

这是由于 JAVA 库兼容性问题。基本上,YARN 会加载一个与您用来构建 JAR 的版本(可能是 3.x)不兼容的Protobuf版本(可能是 2.x)

检查 YARN 日志以识别正在加载的版本,并使用相同的版本重新构建您的 JAR。

于 2018-06-07T07:47:40.130 回答