public static String toPigScript ( Class < ? extends TBase < ? , ? > > thriftClass , Class < ? extends LoadFunc > pigLoader ) { StringBuilder sb = new StringBuilder ( ) ; /* we are commenting out explicit schema specification. The schema is * included mainly to help the readers of the pig script. Pig learns the * schema directly from the loader. * If explicit schema is not commented, we might have surprising results * when a Thrift class (possibly in control of another team) changes, * but the Pig script is not updated. Commenting it out avoids this. */ StringBuilder prefix = new StringBuilder ( " -- " ) ; sb . append ( "raw_data = load '$INPUT_FILES' using " ) . append ( pigLoader . getName ( ) ) . append ( "('" ) . append ( thriftClass . getName ( ) ) . append ( "');\n" ) . append ( prefix ) . append ( "as " ) ; prefix . append ( " " ) ; try { stringifySchema ( sb , toSchema ( thriftClass ) , DataType . TUPLE , prefix ) ; } catch ( FrontendException e ) { throw new RuntimeException ( e ) ; } sb . append ( "\n" ) ; return sb . toString ( ) ; }
Turn a Thrift Struct into a loading schema for a pig script .