通过MapReduce生成tfrecord时出错

时间:2018-06-06 16:19:34

标签: hadoop tensorflow tfrecord protobuf-java

我正在尝试使用MR作业生成TFRecord,但遇到一个我无法理解的错误,似乎无法找到一种方法来读取列表?当我尝试构建在tensorflow中跟随hadoop示例的Example时,它抛出以下内容。任何人都可以指出一种方式吗?感谢

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)

1 个答案:

答案 0 :(得分:0)

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

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