我正在尝试将类型设置为同时记录和空。我不知道这是否可能。这是我的输入 json
{
"request":{
"reqNo": null
},
"dataset":{
"id":"1",
"value":"sample"
}
}
现在我正在使用 Nifi 创建 Avroschema,
GenerateFlowFile -->> InferAvroSchema -->> AttributeToJson
我会得到相应的架构
{
"type":"record",
"name":"one",
"namespace":"com.sixdee",
"fields":[
{
"name":"request",
"type":{
"type":"record",
"name":"request",
"namespace":"",
"fields":[
{
"name":"reqNo",
"type":"null"
}
]
}
},
{
"name":"dataset",
"type":{
"type":"record",
"name":"dataset",
"namespace":"",
"fields":[
{
"name":"id",
"type":"string"
},
{
"name":"value",
"type":"string"
}
]
}
}
]
}
现在我将验证这个模式并使用 java 代码输入 json。它带来成功。但问题是我不能将请求标签设为空并同时记录。为此,我举了另一个例子。
我修改了我的 Avro 架构以满足我将类型设置为 null 并立即记录的要求。
修改后的 Avro 架构:
{
"type":"record",
"name":"one",
"namespace":"com.sixdee",
"fields":[
{
"name":"request",
"type": [
"null", {
"type":{
"type":"record",
"name":"request",
"fields":[
{
"name":"reqNo",
"type":"null"
}
]
}
}
]
},
{
"name":"dataset",
"type":{
"type":"record",
"name":"dataset",
"namespace":"",
"fields":[
{
"name":"id",
"type":"string"
},
{
"name":"value",
"type":"string"
}
]
}
}
]
}
但是,在使用我的输入 json 验证此架构时,它失败了。我得到了一个像这样的例外。
org.apache.avro.SchemaParseException: No type: {"type":{"type":"record","name":"request","fields":[{"name":"reqNo","type":"null"}]}}
我需要解决这个问题。