I can do,
{
\"type\": \"record\",
\"name\": \"Foo\",
\"fields\": [
{\"name\": \"bar\", \"type\": {
\"type\": \"record\",
Yes, it's possible.
I've done that in my java project by defining common schema files in avro-maven-plugin Example:
search_result.avro:
{"namespace": "com.myorg.other",
"type": "record",
"name": "SearchResult",
"fields": [
{"name": "type", "type": "SearchResultType"},
{"name": "keyWord", "type": "string"},
{"name": "searchEngine", "type": "string"},
{"name": "position", "type": "int"},
{"name": "userAction", "type": "UserAction"}
]
}
search_suggest.avro:
{"namespace": "com.myorg.other",
"type": "record",
"name": "SearchSuggest",
"fields": [
{"name": "suggest", "type": "string"},
{"name": "request", "type": "string"},
{"name": "searchEngine", "type": "string"},
{"name": "position", "type": "int"},
{"name": "userAction", "type": "UserAction"},
{"name": "timestamp", "type": "long"}
]
}
user_action.avro:
{"namespace": "com.myorg.other",
"type": "enum",
"name": "UserAction",
"symbols": ["S", "V", "C"]
}
search_result_type.avro
{"namespace": "com.myorg.other",
"type": "enum",
"name": "SearchResultType",
"symbols": ["O", "S", "A"]
}
avro-maven-plugin configuration:
org.apache.avro
avro-maven-plugin
1.7.4
generate-sources
schema
${project.basedir}/src/main/resources/avro
${project.basedir}/src/main/java/
**/*.avro
${project.basedir}/src/main/resources/avro/user_action.avro
${project.basedir}/src/main/resources/avro/search_result_type.avro