Ошибка схемы Avro, когда в записи отсутствует поле
Я использую процессор NiFi (v1.2) ConvertJSONToAvro. Я не могу проанализировать запись, которая содержит только 1 из 2 элементов типа "запись". Этот элемент также может полностью отсутствовать в данных. Моя схема Avro неверна?
Фрагмент схемы:
"name": "personname",
"type": [
"null":,
{
"type": "record",
"name": "firstandorlast",
"fields": [
{
"name": "first",
"type": [
"null",
"string"
]
},
{
"name": "last",
"type": [
"null",
"string"
]
}
]
}
]
Если "personname" содержит как "first", так и "last", это работает, но если оно содержит только один из элементов, произойдет сбой с ошибкой: Невозможно преобразовать поле personname: не удалось разрешить union: {"last":"Smith"} не в "type": [ "null":, { "type": "record", "name": "firstandorlast", "fields": [ { "name": "first", "type": [ "null", "string" ] }, { "name": "last", "type": [ "null", "string" ] } ] } ]
1 ответ
Вам не хватает значения по умолчанию
https://avro.apache.org/docs/1.8.1/spec.html
Ваша схема должна выглядеть так
"name": "personname",
"type": [
"null":,
{
"type": "record",
"name": "firstandorlast",
"fields": [
{
"name": "first",
"type": [
"null",
"string"
],
"default": "null"
},
{
"name": "last",
"type": [
"null",
"string"
],
"default": "null"
}
]
}
]