необязательный массив в схеме avro

Мне интересно, действительно ли это возможно иметь необязательный массив. Давайте предположим такую ​​схему:

{ 
    "type": "record",
    "name": "test_avro",
    "fields" : [
        {"name": "test_field_1", "type": "long"},
        {"name": "subrecord", "type": [{
         "type": "record",
         "name": "subrecord_type",
           "fields":[{"name":"field_1", "type":"long"}]
          },"null"]
    },
    {"name": "simple_array",
    "type":{
        "type": "array",
        "items": "string"
      }
    }
  ]
}

Попытка записать avro-запись без "simple_array" приведет к появлению NPE в файле записи данных. Для подзаписи это нормально, но когда я пытаюсь определить массив как необязательный:

{"name": "simple_array",
 "type":[{
   "type": "array",
   "items": "string"
   }, "null"]

Это приводит не к NPE, а к исключению времени выполнения:

AvroRuntimeException: Not an array schema: [{"type":"array","items":"string"},"null"]

Спасибо.

11
задан diliop 15 March 2012 в 02:19
поделиться