我在文件中有二进制格式的avro消息。
的OBJ ^ A ^ d ^Vavro.schemaÞ^ B { “类型”: “记录”, “名称”: “REC”, “命名空间”: “NS”, “字段”:[{ “名称”:” ID”, “类型”:[ “INT”, “空”]},{ “名称”: “名称”, “类型”:[ “字符串”, “空”]},{ “名称”: “foo_id” “类型”:[ “INT”, “空”]}]} ^Tavro.codec^Lsnappy^@¤²/n¹¼Bù<图9b&GT; à«_ ^ NI ^ W
我只对SCHEMA感兴趣。有没有办法从这个文件中读取/解析模式?我正在手工解析这个文件以提取模式,但我希望avro能帮助我做一个标准的方法。
答案 0 :(得分:1)
Avro确实提供了一个API来从文件中获取架构:
JFrame frame = new JFrame();
frame.getContentPane().setLayout(new FlowLayout());
frame.getContentPane().add(new JLabel(new ImageIcon(image)));
frame.pack();
frame.setVisible(true);
我认为它应该符合您对“只是架构”的定义,如果没有,请告诉我。
如果您没有理由以编程方式执行此操作,也可以使用avro-tools中的 File file = new File("myFile.avro")
FileReader<?> reader = DataFileReader.openReader(file, new GenericDatumReader<>());
Schema schema = reader.getSchema();
System.out.println(schema);
命令。
答案 1 :(得分:0)
使用avro-tools是从avro文件中获取avro架构的最快捷,最简单的方法。只需使用以下命令:
avro-tools getchema myfile.avro > myfile.avsc