Я пишу Java-программу для подсчета строки файла protobuff, хранящегося в HDFS, и запускаю программу с помощью «hadoop -jar countLine.jar»
Однако я получаю исключение
Исключениев потоке "main" java.lang.NoSuchMethodError: com.google.protobuf.CodedInputStream.shouldDiscardUnknownFields () Z в com.google.protobuf.GeneratedMessageV3.parseUnknownField (только сгенерированный * * *.некоторые из файлов protobuf.Файлы с другой схемой не имеют этой проблемы.
Мой файл protobuf - gzipped pb.gz.
//Here is the code
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
Path path = new Path(<HDFS path to file>);
InputStream input = new GZIPInputStream(fs.open(path));
Message m;
while ((m = defaultMsg.getParserForType().parseDelimitedFrom(input)) != null) {
recordCount++;
}
Если я помещаю файл в локальный файл, все работает нормально
InputStream input = new GZIPInputStream(new File(path_to_local_file));
Message m;
while ((m = defaultMsg.getParserForType().parseDelimitedFrom(input)) != null) {
recordCount++;
}
У кого-нибудь есть идеи?Будет ли размер файла вызывать эту проблему?
Спасибо
Дэвид