2016-06-20 14 views
0

Ich habe eine Avro-Nachricht im Binärformat in einer Datei.Wie lese/analysiere * nur * das JSON-Schema aus einer Datei, die eine Avro-Nachricht im Binärformat enthält?

Obj^A^D^^ Vavro.schemaÞ B { "type": "record", "name": "Aufnahme", "Namensraum": "ns", "Felder": [{ "name ":" id "," type ": [" int "," null "]}, {" name ":" name "," type ": [" string "," null "]}, {" name ": "foo_id", "type": [ "int", "null"]}]}^Tavro.codec^Lsnappy^@¤²/n¹¼Bù < 9b> à «_^ni^W

I‘ Ich bin nur an der SCHEMA interessiert. Gibt es eine Möglichkeit, nur das Schema aus dieser Datei zu lesen/zu analysieren? Ich analysiere gerade diese Datei von Hand, um das Schema zu extrahieren, aber ich hatte gehofft, Avro würde mir eine Standardmethode dabei helfen.

Antwort

1

Avro hat eine API zur Verfügung stellen das Schema aus einer Datei zu erhalten:

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

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

Ich denke, dass es Ihre Definition von „nur das Schema“ entsprechen sollten, lassen Sie mich wissen, wenn es nicht der Fall ist.

Sie können auch den Befehl von avro-tools verwenden, wenn Sie keinen programmatischen Grund dafür haben.

+0

Schön! Vielen Dank! – TakeSoUp

0

Die Verwendung von avro-tools ist der schnellste und einfachste Weg, avro-Schema aus einer avro-Datei zu erhalten. Verwenden Sie einfach den folgenden Befehl:

avro-tools getchema myfile.avro > myfile.avsc