0

我在一个文件中有一个二进制格式的 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 感兴趣。有没有办法从这个文件中读取/解析模式?我目前正在手动解析这个文件以提取模式,但我希望 avro 能帮助我以一种标准的方式来做这件事。

4

2 回答 2

1

Avro 确实提供了一个 API 来从文件中获取模式:

    File file = new File("myFile.avro")

    FileReader<?> reader = DataFileReader.openReader(file, new GenericDatumReader<>());
    Schema schema = reader.getSchema();
    System.out.println(schema);

我认为它应该符合您对“只是模式”的定义,如果不符合,请告诉我。

getschema如果您没有理由以编程方式执行此操作,您也可以使用 avro-tools 中的命令。

于 2016-06-21T15:21:06.410 回答
0

使用 avro-tools 是从 avro 文件中获取 avro 架构的最快捷、最简单的方法。只需使用以下命令:

avro-tools getchema myfile.avro > myfile.avsc
于 2017-05-17T01:19:16.007 回答