【发布时间】:2016-10-29 03:10:31
【问题描述】:
我试图弄清楚为什么我无法在 "message" avro 架构中使用 media_type:
{
"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"
]
}
]
}
}
]
}
}]
}
当我尝试解析架构时,出现以下错误:
线程“主”org.apache.avro.SchemaParseException 中的异常:未定义名称:“media_type” 在 org.apache.avro.Schema.parse(Schema.java:1162) 在 org.apache.avro.Schema.parse(Schema.java:1272) 在 org.apache.avro.Schema.parse(Schema.java:1203)
我解析为:
InputStream in = ClasName.class.getResourcesAsStream("");
Schema sc = new Parser().parse(in)
当我只使用 json 数据类型时,它工作得很好。如何为我设计的数据类型定义一个值?
【问题讨论】: