2016-06-27 5 views
0

Ich versuche, herauszufinden, warum bin ich nicht in der Lage zu verwenden media_type in "message" avro Schema { "namespace": "com.ci.generated", "name": "MessageEnvelope", "type": "record", "fields": [ { "name": "message", "type": { "name": "Message", "type": "record", "fields": [ { "name": "media_type", "type": { "type":"enum", "name":"MediaTypes", "symbols": [ "Text", "Image" ] } }, { "name": "text_record", "type": { "type":"record", "name":"TextRecords", "fields": [ {"name" : "name", "type": "string"} ] } }, { "name": "image_record", "type": { "name":"ImageRecords", "type":"record", "fields": [ { "name" : "url", "type": "string"}, { "name" : "sentiment", "type": { "name" : "ImageSentiments", "type": "enum", "symbols": ["positive", "negetive", "neutral"] }
} ] } }, { "name": "named_media", "type": { "name": "NamedMedia", "type" : "record", "fields": [ {"name": "type", "type":["media_type"]}, {"name": "index", "type": "int"}, {"name": "name", "type":["null","string"]}, {"name": "data", "type":[ "null", "text_record", "image_record" ] } ] }
} ] } } ] }
Nicht in der Lage zu benutzerdefinierten Typ in Avro Schema 1.7.7

Wenn ich versuche, das Schema zu analysieren, ich angeben bekomme folgenden Fehler: Ausnahme im Thread "Haupt" org.apache.avro.SchemaParseException: Undefinierter Name: "media_type" bei org.apache.avro.Schema.parse (Schema.java:1162) bei org.apache. avro.Schema.parse (Schema.java:1272) bei org.apache.avro.Schema.parse (Schema.java:1203)

Ich analysiere als: InputStream in = ClasName.class.getResourcesAsStream (""); Schema sc = neuer Parser(). Parse (in)

Es funktioniert perfekt, wenn ich nur json Datentypen verwende. Wie kann ich einen Wert für meinen entworfenen Datentyp definieren?

Antwort

0

Kann dies durch Ändern der Daten zu: {"name": "data", "type":[ "null", "TextRecord", "ImageRecords" ] }