Необходимо указать один файл для каждой записи следующим образом:
ABCarr.avs c:
{
"name": "ABCarr",
"namespace": "com.cmain",
"type": "record",
"fields": [
{
"name": "prod1",
"type": "double"
},
{
"name": "prod2",
"type": "string"
}
]
}
MainSchemaName.avs c:
{
"type": "record",
"name": "MainSchemaName",
"version": "2",
"namespace": "com.cmain",
"doc": "AExample",
"fields": [
{
"name": "MainABC",
"type": {
"type": "array",
"items": "com.cmain.ABCarr",
"java-class": "java.util.List"
}
},
{
"name": "comnsu1",
"type": "int"
}
]
}
Затем вы должны сконфигурировать avro-maven-plugin для построения схем, которые требуются ранее (в вашем случае ABCarr). Предположим, что ваши файлы схемы avro расположены по src/main/resources/schema/avro
пути, вы должны указать следующее для построения ABCarr и затем использовать его в MainSchemaName как тип:
<plugin>
<groupId>org.apache.avro</groupId>
<artifactId>avro-maven-plugin</artifactId>
<version>1.9.2</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>schema</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/resources/schema/avro</sourceDirectory>
<stringType>String</stringType>
<createSetters>true</createSetters>
<fieldVisibility>private</fieldVisibility>
<imports>
<import>${project.basedir}/src/main/resources/schema/avro/ABCarr.avsc</import>
</imports>
</configuration>
</execution>
</executions>
</plugin>
Так что просто импортируйте все общие схемы Опция импорта.