I'm trying to use a MR job to generate TFRecord, but come across an error which I can't understand, it seems can't find a way to read the list?? It throws the following when I trying to build the Example which follows the hadoop example in tensorflow. Can anyone point out a way ? Thanks
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)
This is due to a JAVA library compatibity issue. Basically YARN loads a version of Protobuf (likely a 2.x) which is not compatible with the one you used to build up your JAR (probably a 3.x)
Check the YARN logs to identify the version being loaded, and rebuild your JAR with the same one.