Puis-je découper un schéma Apache Avro sur plusieurs fichiers?
Je peux le faire,
{
"type": "record",
"name": "Foo",
"fields": [
{"name": "bar", "type": {
"type": "record",
"name": "Bar",
"fields": [ ]
}}
]
}
et qui fonctionne très bien, mais en supposant que je veux diviser le schéma en deux fichiers tels que:
{
"type": "record",
"name": "Foo",
"fields": [
{"name": "bar", "type": "Bar"}
]
}
{
"type": "record",
"name": "Bar",
"fields": [ ]
}
Ne Avro ont la capacité de faire cela?
source d'informationauteur Owen
Vous devez vous connecter pour publier un commentaire.
Oui, c'est possible.
Je l'ai fait dans mon projet java par définir les fichiers de schéma dans les avro-maven-plugin
Exemple:
search_result.avro:
search_suggest.avro:
user_action.avro:
search_result_type.avro
avro-maven-plugin de configuration:
Vous pouvez également définir plusieurs schémas à l'intérieur d'un fichier:
schémas.avsc:
Si vous souhaitez réutiliser les schémas dans de multiples endroits ce n'est pas super agréable, mais il améliore la lisibilité et la maintenabilité beaucoup à mon avis.
Je suppose, votre motivation est (comme) la structuration de votre définition de schéma et en évitant les copier&collez-les erreurs.
Pour y parvenir, vous pouvez également utiliser Avro IDL. Elle permet de définir avro des schémas sur un niveau plus élevé. La réutilisation de types est possible dans le même fichier et aussi dans plusieurs fichiers.
Pour générer le .avsc-fichiers d'exécution
La résultante .avsc-fichiers de chercher à peu près le même que celui de votre premier exemple, mais comme ils sont générés à partir de l' .avdl, vous ne serez pas perdu dans l'détaillé au format json.
De ce que j'ai pu découvrir jusqu'à présent, aucun.
Il est bon d'écrire à propos de quelqu'un qui codé leur propre méthode pour faire cela ici:
http://www.infoq.com/articles/ApacheAvro
L'ordre des importations dans l'pom.xml questions. Vous devez importer les sous-types d'abord avant de traiter le reste.
Qui permettrait de débloquer la codegen d'émettre des
undefined name: Bar.avro
erreur.Vous avez besoin d'importer de l'avsc fichier dans avro-plugin maven où vous avez d'abord écrit le schéma d'objet que vous souhaitez réutiliser,