@SuppressWarnings({ "unchecked", "rawtypes" })
  private AvroRecordBuilderFactory<E> buildAvroRecordBuilderFactory(
      Schema schema) {
    if (specific) {
      Class<E> specificClass;
      String className = schema.getFullName();
      try {
        specificClass = (Class<E>) Class.forName(className);
      } catch (ClassNotFoundException e) {
        throw new DatasetException("Could not get Class instance for "
            + className);
      }
      return new SpecificAvroRecordBuilderFactory(specificClass);
    } else {
      return (AvroRecordBuilderFactory<E>) new GenericAvroRecordBuilderFactory(
          schema);
    }
  }
@ SuppressWarnings ( { "unchecked" , "rawtypes" } ) private AvroRecordBuilderFactory < E > buildAvroRecordBuilderFactory ( Schema schema ) { if ( specific ) { Class < E > specificClass ; String className = schema . getFullName ( ) ; try { specificClass = ( Class < E > ) Class . forName ( className ) ; } catch ( ClassNotFoundException e ) { throw new DatasetException ( "Could not get Class instance for " + className ) ; } return new SpecificAvroRecordBuilderFactory ( specificClass ) ; } else { return ( AvroRecordBuilderFactory < E > ) new GenericAvroRecordBuilderFactory ( schema ) ; } }
Build the appropriate AvroRecordBuilderFactory for this instance. Avro has
many different record types, of which we support two: Specific and Generic.

@param schema
The Avro schema needed to construct the AvroRecordBuilderFactory.
@return The constructed AvroRecordBuilderFactory.