Я определил тип Avro с именем "some.package.SourceMetadata"
в файле json с именем commonSourceMetadata.avsc
:
{
"type": "record",
"name": "SourceMetadata",
"namespace": "some.package",
"fields": [..]
}
и я пытаюсь использовать его в другом файле avsc, используя ключевое слово imports
, которое я нашел в Apache Avro 1.7.3
:
"imports": ["commonSourceMetadata.avsc"],
"fields": [
{
"name": "sourceMetadata",
"type": "some.package.SourceMetadata"
},
Я также пробовал:
"fields": [
{
"name": "sourceMetadata",
"imports": ["commonSourceMetadata.avsc"],
"type": "some.package.SourceMetadata"
},
Версия Apache Avro
- это 1.9
.
Тем не менее я получаю:
org.apache.avro.SchemaParseException: "some.package.SourceMetadata" is not a defined name. The type of the "sourceMetadata" field must be a defined name or a {"type": ...} expression.
at org.apache.avro.Schema.parse(Schema.java:1637)
Мне также ясно, что он не учитывает imports
или import
, потому что я пытался импортировать несуществующий файл, и там нет никаких жалоб.
Как я могу сделать это defined name
?
Мы используем Scala, SBT и плагин AvroHugger для создания классов случаев Scala из определений типов avsc Avro.