オプションの配列を持つことが可能かどうか疑問に思っています。次のようなスキーマを想定しましょう。
{
"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"
}
}
]
}
「simple_array」なしで avro レコードを書き込もうとすると、datafilewriter で NPE が発生します。サブレコードの場合は問題ありませんが、配列をオプションとして定義しようとすると:
{"name": "simple_array",
"type":[{
"type": "array",
"items": "string"
}, "null"]
NPE は発生しませんが、実行時例外が発生します。
AvroRuntimeException: Not an array schema: [{"type":"array","items":"string"},"null"]
ありがとう。