Can I split an Apache Avro schema across multiple files?

前端 未结 6 1493
青春惊慌失措
青春惊慌失措 2020-12-24 12:43

I can do,

{
    \"type\": \"record\",
    \"name\": \"Foo\",
    \"fields\": [
        {\"name\": \"bar\", \"type\": {
            \"type\": \"record\",
             


        
6条回答
  •  误落风尘
    2020-12-24 12:49

    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
         
           
         
    
    
    

提交回复
热议问题