如何从包含二进制格式的 avro 消息的文件中 read/parse *仅* JSON 模式?
How to read/parse *only* the JSON schema from a file containing an avro message in binary format?
我在文件中有二进制格式的 avro 消息。
Obj^A^D^Vavro.schemaÞ^B{"type":"record","name":"rec","namespace":"ns","fields":[{"name":"id","type":["int","null"]},{"name":"name","type":["string","null"]},{"name":"foo_id","type":["int","null"]}]}^Tavro.codec^Lsnappy^@¤²/n¹¼Bù<9b> à«_^NÌ^W
我只对 SCHEMA 感兴趣。有没有办法 read/parse 仅来自该文件的架构?我目前正在手动解析此文件以提取模式,但我希望 avro 能帮助我找到一种标准的方法。
Avro 确实提供了 API 从文件中获取模式:
File file = new File("myFile.avro")
FileReader<?> reader = DataFileReader.openReader(file, new GenericDatumReader<>());
Schema schema = reader.getSchema();
System.out.println(schema);
我认为它应该符合您对“只是模式”的定义,如果不符合请告诉我。
如果您没有理由以编程方式执行此操作,您也可以使用 avro-tools 中的 getschema
命令。
使用 avro-tools 是从 avro 文件中获取 avro 模式的最快和最简单的方法。只需使用以下命令:
avro-tools getchema myfile.avro > myfile.avsc
我在文件中有二进制格式的 avro 消息。
Obj^A^D^Vavro.schemaÞ^B{"type":"record","name":"rec","namespace":"ns","fields":[{"name":"id","type":["int","null"]},{"name":"name","type":["string","null"]},{"name":"foo_id","type":["int","null"]}]}^Tavro.codec^Lsnappy^@¤²/n¹¼Bù<9b> à«_^NÌ^W
我只对 SCHEMA 感兴趣。有没有办法 read/parse 仅来自该文件的架构?我目前正在手动解析此文件以提取模式,但我希望 avro 能帮助我找到一种标准的方法。
Avro 确实提供了 API 从文件中获取模式:
File file = new File("myFile.avro")
FileReader<?> reader = DataFileReader.openReader(file, new GenericDatumReader<>());
Schema schema = reader.getSchema();
System.out.println(schema);
我认为它应该符合您对“只是模式”的定义,如果不符合请告诉我。
如果您没有理由以编程方式执行此操作,您也可以使用 avro-tools 中的 getschema
命令。
使用 avro-tools 是从 avro 文件中获取 avro 模式的最快和最简单的方法。只需使用以下命令:
avro-tools getchema myfile.avro > myfile.avsc