@Override
  public String inferSchema(Map<String, HiveTypeInfo> record)
      throws StageException
  {
    Map<String, Schema> fields = new LinkedHashMap<>();
    for(Map.Entry<String, HiveTypeInfo> pair:  record.entrySet()) {
      if(!HiveMetastoreUtil.validateObjectName(pair.getKey())) {
        throw new HiveStageCheckedException(Errors.HIVE_30, pair.getKey());
      }
      Schema columnSchema = Schema.createUnion(ImmutableList.of(Schema.create(Schema.Type.NULL), traverse(pair)));
      // We always set default value to null
      columnSchema.addProp("default", NullNode.getInstance());
      fields.put(pair.getKey(), columnSchema);
    }
    Schema schema =  buildSchema(fields);
    return schema.toString();
  }
@ Override public String inferSchema ( Map < String , HiveTypeInfo > record ) throws StageException { Map < String , Schema > fields = new LinkedHashMap < > ( ) ; for ( Map . Entry < String , HiveTypeInfo > pair : record . entrySet ( ) ) { if ( ! HiveMetastoreUtil . validateObjectName ( pair . getKey ( ) ) ) { throw new HiveStageCheckedException ( Errors . HIVE_30 , pair . getKey ( ) ) ; } Schema columnSchema = Schema . createUnion ( ImmutableList . of ( Schema . create ( Schema . Type . NULL ) , traverse ( pair ) ) ) ; columnSchema . addProp ( "default" , NullNode . getInstance ( ) ) ; fields . put ( pair . getKey ( ) , columnSchema ) ; } Schema schema = buildSchema ( fields ) ; return schema . toString ( ) ; }
It takes a record structure in <String, HiveTypeInfo> format.
Generate a schema and return in String.
@param record : record structure
@return String representation of Avro schema.
@throws StageException: If record contains unsupported type