2014-04-09 9 views
12

Apache Avro bietet eine kompakte, schnelle, binäre Datenformat, reiche Datenstruktur für die Serialisierung. Es erfordert jedoch, dass der Benutzer ein Schema (in JSON) für Objekte definiert, die serialisiert werden müssen.Generieren Avro-Schema aus bestimmten Java-Objekt

In einigen Fällen kann dies nicht möglich sein (z. B. enthält die Klasse dieses Java-Objekts einige Member, deren Typen externe Java-Klassen in externen Bibliotheken sind). Daher frage ich mich, ob es ein Tool gibt, das die Informationen aus der .class-Datei des Objekts abrufen und das Avro-Schema für dieses Objekt generieren kann (wie Gson die Objektklasseninformationen verwendet, um bestimmte Objekte in JSON-Zeichenketten umzuwandeln).

+0

Interessante Frage. Es gibt ein Werkzeug, das JSON-Schemas aus Java-Klassen (jsonschema2pojo) erzeugen kann und ich habe ein Werkzeug, das Avro-Schema aus JSON-Schemas (json-schema-avro) generieren kann. Das vorherige Tool kann jedoch nur JSON Schema v3 generieren, und mein Tool erwartet JSON Schema v4 als Eingaben ... – fge

+0

Vielen Dank für Ihre Antwort, meinen Sie, dass Sie ein Werkzeug geschrieben haben, das Avro Schema aus JSON-Schema konvertieren kann? –

+1

Ja, ich meine das: https://github.com/fge/json-schema-avro – fge

Antwort

0

Hier ist, wie man Generate an Avro Schema from POJO definition

ObjectMapper mapper = new ObjectMapper(new AvroFactory()); 
AvroSchemaGenerator gen = new AvroSchemaGenerator(); 
mapper.acceptJsonFormatVisitor(RootType.class, gen); 
AvroSchema schemaWrapper = gen.getGeneratedSchema(); 
org.apache.avro.Schema avroSchema = schemaWrapper.getAvroSchema(); 
String asJson = avroSchema.toString(true); 
Verwandte Themen