Я пытаюсь установить тип для записи и нуля одновременно. Я не знаю, возможно ли это. Вот мой ввод 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. Это дает успех. Но проблема в том, что я не могу сделать тег запроса нулевым и записать его одновременно. Для этого я сослался на другой пример.
Схема Avro. Как установить тип для записи и null одновременно
И я изменил свою схему 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"}]}}
Мне нужно решение этой проблемы.