I use proto3 to log user event and then run a mapreduce to stat same metrics. But it reports an error:
Exception in thread "Thread-2" java.lang.NoSuchMethodError: org.apache.hadoop.yarn.proto.YarnProtos$LocalResourceProto.hashLong(J)I
at org.apache.hadoop.yarn.proto.YarnProtos$LocalResourceProto.hashCode(YarnProtos.java:11555)
at org.apache.hadoop.yarn.api.records.impl.pb.LocalResourcePBImpl.hashCode(LocalResourcePBImpl.java:62)
at java.util.HashMap.hash(HashMap.java:338)
at java.util.HashMap.put(HashMap.java:611)
The problem is proto3 doesn't keep backward compatibility with proto2. hashLong is no longer exists in generated code with proto3. Now I faced a deed situation that neither proto2 nor proto3 can be loaded when i run a mapreduce job.