До сих пор я пробовал это:
Код: Выделить всё
public List deserializeGenericWithSchema(byte[] message) throws IOException {
List listOfRecords = new ArrayList();
DatumReader reader = new GenericDatumReader();
DataFileReader fileReader =
new DataFileReader(new SeekableByteArrayInput(message), reader);
GenericRecord record = null;
while (fileReader.hasNext()) {
listOfRecords.add(fileReader.next(record));
}
return listOfRecords;
}
java.io.IOException: Неверная кодировка int в
org.apache.avro.io.BinaryDecoder.readInt(BinaryDecoder.java:145) по адресу
org.apache.avro.io.BinaryDecoder.readBytes(BinaryDecoder .java:282) в
org.apache.avro.file.DataFileStream.initialize(DataFileStream.java:112)
в org.apache .avro.file.DataFileReader.(DataFileReader.java:97)
Однако, если я запишу на диск сообщение массива байтов и изменю моя функция типа:
Код: Выделить всё
public List deserializeGenericWithSchema(String fileName) throws IOException {
byte[] file = new File(fileName);
List listOfRecords = new ArrayList();
DatumReader reader = new GenericDatumReader();
DataFileReader fileReader =
new DataFileReader(file, reader);
GenericRecord record = null;
while (fileReader.hasNext()) {
listOfRecords.add(fileReader.next(record));
}
return listOfRecords;
}
Что я делаю неправильно в своем первом подходе? п>
Подробнее здесь: https://stackoverflow.com/questions/605 ... from-bytes