【发布时间】:2015-11-18 09:00:33
【问题描述】:
我正在尝试将 protobuf 对象转换为 Avro。我正在使用
//myProto object is deserialized using google protobuf API
ProtobufDatumWriter<MyProto> pbWriter = new ProtobufDatumWriter<MyProto>(MyProto.class);
FileOutputStream fo = new FileOutputStream(args[0]);
Encoder e = EncoderFactory.get().binaryEncoder(fo, null);
pbWriter.write(myProto, e);
fo.flush();
avro 文件已成功创建。如果我 cat 文件,我可以看到文件中的数据。但是,当我尝试使用 avro-tools 获取有关已保存 avro 文件的架构或元信息时,它会说
Exception in thread "main" java.io.IOException: Not a data file.
at org.apache.avro.file.DataFileStream.initialize(DataFileStream.java:105)
at org.apache.avro.file.DataFileReader.<init>(DataFileReader.java:97)
at org.apache.avro.tool.DataFileGetSchemaTool.run(DataFileGetSchemaTool.java:47)
查看 Avro 源代码,错误表示它没有与 MAGIC 前 4 个字节匹配的前 4 个字节。我想看看我是否做错了什么。
感谢您能给我的任何帮助。
【问题讨论】:
标签: java protocol-buffers avro