У меня возникают проблемы с настройкой значений по умолчанию для полей avro. У меня есть простая схема, как показано ниже:
data.avsc:
{
"namespace":"test",
"type":"record",
"name":"Data",
"fields":[
{ "name": "id", "type": [ "long", "null" ] },
{ "name": "value", "type": [ "string", "null" ] },
{ "name": "raw", "type": [ "bytes", "null" ] }
]
}
Я использую avro-maven-plugin v1.7.6 для создания Java-модели.
Когда я создаю экземпляр модели, используя
Data data = Data.newBuilder().build();
, он выходит из строя с исключением org.apache.avro.AvroRuntimeException: org.apache.avro.AvroRuntimeException: Тип идентификатора поля: UNION pos: 0 не установлен и не имеет значения по умолчанию.
Но если я укажу свойство "default",
{ "name": "id", "type": [ "long", "null" ], "default": "null" },
Я не получаю эту ошибку. Я прочитал в документации, что первая схема в объединении становится стандартной схемой. Поэтому мой вопрос: почему мне все еще нужно указать свойство "default"? Как еще сделать поле необязательным?
И если мне нужно указать значения по умолчанию, как это работает для объединения; мне нужно указать значения по умолчанию для каждой схемы в объединении и как это работает в терминах порядка/синтаксиса?
Спасибо.