我有一些来自kafka提供商的Avro消息,这些消息看起来像这样:
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字节的架构长度。我无法确认曲折变形(为什么长度,永远不会是负面的,是zigzaged?)是正确的值。我认为它在200K范围内。
我相信这就是为什么我无法使用avro-tools jar来获取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)
答案 0 :(得分:0)
看起来您在Avro文件中只有一条记录。生成Avro文件的系统正在运行旧版本。我有一个类似的问题,Nifi运行1.7.7。通过将两个记录合并到Avro文件中,我们能够解决该问题。
Avro 1.8.2修复了这个错误。
1.7.7和1.8.0 / 1.8.1都有单一记录问题。