Это авро сообщение действительно?
У меня есть несколько примеров сообщений Avro от поставщика kafka, который выглядит так:
00000000 4f 62 6a 01 04 16 61 76 72 6f 2e 73 63 68 65 6d |Obj...avro.schem|
00000010 61 ef bf bd 24 7b 22 74 79 70 65 22 3a 22 72 65 |a...${"type":"re|
Тот ef bf bd 24
Я ожидал, что длина схемы составит 2332 байта. У меня возникают проблемы с подтверждением того, что зигзагообразный вариант (почему длина, которая никогда не может быть отрицательной, будет зигзагообразным?) Является правильным значением. Я считаю, что это где-то в диапазоне 200К.
Я полагаю, что именно поэтому у меня возникают проблемы с использованием баночки с инструментами avro-tools для getmeta, getschema или преобразования в json.
Является ли это конкретной известной проблемой в версии Avro Tools 1.8.2 или на платформе Mac OS с java 1.8.0_102-b14 для этой версии инструмента?
Похоже, это было неправильно закодировано? Потому что все звонки на использование инструментов дают мне:
$ java -jar ~/Downloads/avro-tools-1.8.2.jar tojson dt20170607hr08_1496793109907_11_8229967.bin.1
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" java.lang.IllegalArgumentException
at java.nio.ByteBuffer.allocate(ByteBuffer.java:334)
at org.apache.avro.io.BinaryDecoder.readBytes(BinaryDecoder.java:288)
at org.apache.avro.file.DataFileStream.initialize(DataFileStream.java:112)
at org.apache.avro.file.DataFileStream.<init>(DataFileStream.java:84)
at org.apache.avro.tool.DataFileReadTool.run(DataFileReadTool.java:71)
at org.apache.avro.tool.Main.run(Main.java:87)
at org.apache.avro.tool.Main.main(Main.java:76)
1 ответ
Похоже, у вас есть одна запись в файле Avro. Система, генерирующая файл Avro, использует более старую версию. У меня похожая проблема с Nifi работает 1.7.7. Объединяя две записи в файл Avro, мы смогли обойти эту проблему.
Avro 1.8.2 исправляет ошибку.
1.7.7 и 1.8.0/1.8.1 имеют одну проблему записи.