0
我正在嘗試將一個protobuf對象轉換爲Avro。我正在使用將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文件已成功創建。如果我抓住文件,我可以看到文件中的數據。然而,當我試圖用Avro的工具來獲取架構或元信息有關保存的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源代碼,錯誤意味着它不具有前4個字節匹配前面的4個字節是MAGIC。我想看看我是否做錯了什麼。
感謝您給我的任何幫助。