Я пытаюсь установить тип для записи и null одновременно. Я не знаю, возможно ли это. Вот мой ввод json
{
"request":{
"reqNo": null
},
"dataset":{
"id":"1",
"value":"sample"
}
}
А теперь я создаю Авросхему с использованием Nifi,
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"
}
]
}
}
]
}
и Теперь я проверю эту схему и введу json, используя java код. Это дает успех. Но проблема в том, что я не могу сделать тег Request пустым и записать одновременно. Для этого я привел еще один пример.
Avro Schema. Как установить type для «record» и «null» одновременно
И я изменил свою схему Avro, чтобы удовлетворить мои требования по установке типа на null и запись сразу.
Modified Avro Schema:
{
"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"}]}}
Мне нужно решение этой проблемы.