public static Schema buildSchema ( Map < String , Schema > fields , Object ... levels ) { List < Schema . Field > recordFields = new ArrayList <> ( fields . size ( ) ) ; for ( Map . Entry < String , Schema > entry : fields . entrySet ( ) ) { recordFields . add ( new Schema . Field ( entry . getKey ( ) , entry . getValue ( ) , null , // Avro's Schema.Field constructor requires doc. entry . getValue ( ) . getJsonProp ( "default" ) ) ) ; } Schema recordSchema ; if ( levels . length == 0 ) { recordSchema = Schema . createRecord ( schemaName , null , null , false ) ; } else { LinkedList < String > lvl = ( LinkedList < String > ) levels [ 0 ] ; recordSchema = Schema . createRecord ( joiner . join ( lvl ) , null , null , false ) ; } recordSchema . setFields ( recordFields ) ; return recordSchema ; }
Build a schema with type record . This will be the top level schema and contains fields