Если схема avro хранится вместе с данными, зачем java avro api нужно, чтобы я предоставил файл схемы? - PullRequest
0 голосов
/ 06 июня 2019

Microsoft Azure решает, в некоторых случаях, выгружать данные в формате avro. Данные, о которых идет речь, - это просто json records, с моей точки зрения. Итак, я просто хочу вернуть свои данные json из файла avro.

Я смотрю, как «десериализовать» avro-данные, и примеры здесь:

https://avro.apache.org/docs/1.8.1/gettingstartedjava.html

предъявить претензию:

Data in Avro is always stored with its corresponding schema, meaning we can always read a serialized item regardless of whether we know the schema ahead of time.

К сожалению, примеры требуют знания схемы заранее:

DatumReader<GenericRecord> datumReader = new GenericDatumReader<GenericRecord>(schema);
DataFileReader<GenericRecord> dataFileReader = new DataFileReader<GenericRecord>(file, datumReader);

Я, должно быть, что-то упустил, я просто хочу, чтобы мои данные (текст / json) форматировались из avro. Есть ли способ сделать это, не зная схемы? Не может ли avro просто прочитать это из самого файла?

1 Ответ

0 голосов
/ 08 июня 2019

Зачем писать код, если уже есть инструмент для получения json?

java -jar avro-tools-1.8.2.jar tojson data.avro > output.json

http://central.maven.org/maven2/org/apache/avro/avro-tools/1.8.2/avro-tools-1.8.2.jar

В противном случае у вашего файла есть схема, и вам придется сначала извлечь ееперед чтением содержимого файла, что и делает исходный код вышеупомянутого инструмента

https://github.com/apache/avro/blob/master/lang/java/tools/src/main/java/org/apache/avro/tool/DataFileReadTool.java#L77

...