如何从包含二进制格式的avro消息的文件中仅读取/解析* JSON模式?

时间:2016-06-20 21:29:31

标签: avro spark-avro

我在文件中有二进制格式的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能帮助我做一个标准的方法。

2 个答案:

答案 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