2014-04-09 17 views
12

Apache Avro zapewnia kompaktowy, szybki, binarny format danych, bogatą strukturę danych do serializacji. Jednak wymaga on zdefiniowania schematu (w JSON) dla obiektu, który ma być serializowany.Generowanie schematu Avro z określonego obiektu Java

W niektórych przypadkach nie jest to możliwe (np. Klasa tego obiektu Java ma niektórych członków, których typy są zewnętrznymi klasami java w bibliotekach zewnętrznych). Dlatego zastanawiam się, czy istnieje narzędzie, które może pobrać informacje z pliku .class obiektu i wygenerować schemat Avro dla tego obiektu (np. Gson używa informacji klasy .class do przekonwertowania pewnych obiektów na ciąg JSON).

+0

Ciekawe pytanie. Istnieje narzędzie, które może generować schematy JSON z klas Java (jsonschema2pojo) i mam narzędzie, które może generować schemat Avro z JSON Schemas (json-schema-avro). Jednak poprzednie narzędzie może generować tylko JSON Schema v3, a moje narzędzie awais JSON Schema v4 jako wejścia ... – fge

+0

Dziękuję za odpowiedź, masz na myśli, że napisałeś narzędzie, które może konwertować Avro Schema ze schematu JSON? –

+1

Tak, mam na myśli to: https://github.com/fge/json-schema-avro – fge

Odpowiedz

0

Oto jak 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); 
Powiązane problemy