def __init__(self): self.originalOut = sys.stdout # Setup pig props = Properties() props.putAll(javasystem.getProperties()) for f in os.environ.get("DEFAULT_PIG_OPTS_FILES").split(","): PropertiesUtil.loadPropertiesFromFile(props, f) props.setProperty('log4jconf', os.environ.get('LOG4J_CONF')) pigOpts = os.environ.get('PIG_OPTS') if pigOpts: for opt in pigOpts.strip().split(' '): opt = opt.split('=') props.setProperty(opt[0], opt[1]) pigContext = PigContext(ExecType.LOCAL, props) params = ArrayList() paramFiles = ArrayList() pigContext.setParams(params) pigContext.setParamFiles(paramFiles) PigMain.configureLog4J(props, pigContext) pigInputStream = PigInputStream() reader = ConsoleReader(pigInputStream, OutputStreamWriter(javasystem.out)) inputStream = ConsoleReaderInputStream(reader) self.pigBufferedReader = PigBufferedReader(InputStreamReader(pigInputStream)) self.grunt = PigGrunt(self.pigBufferedReader, pigContext) self.grunt.setConsoleReader(reader) self.pigServer = self.grunt.pig
class Grunt(): def __init__(self): self.originalOut = sys.stdout # Setup pig props = Properties() props.putAll(javasystem.getProperties()) for f in os.environ.get("DEFAULT_PIG_OPTS_FILES").split(","): PropertiesUtil.loadPropertiesFromFile(props, f) props.setProperty('log4jconf', os.environ.get('LOG4J_CONF')) pigOpts = os.environ.get('PIG_OPTS') if pigOpts: for opt in pigOpts.strip().split(' '): opt = opt.split('=') props.setProperty(opt[0], opt[1]) pigContext = PigContext(ExecType.LOCAL, props) params = ArrayList() paramFiles = ArrayList() pigContext.setParams(params) pigContext.setParamFiles(paramFiles) PigMain.configureLog4J(props, pigContext) pigInputStream = PigInputStream() reader = ConsoleReader(pigInputStream, OutputStreamWriter(javasystem.out)) inputStream = ConsoleReaderInputStream(reader) self.pigBufferedReader = PigBufferedReader(InputStreamReader(pigInputStream)) self.grunt = PigGrunt(self.pigBufferedReader, pigContext) self.grunt.setConsoleReader(reader) self.pigServer = self.grunt.pig def illustrate(self, script_path, script_params, script_params_file): """ Runs an Illustrate on the script. Simulates GruntParser.processIllustrate Returns JSON Illustrate results as a string """ # Restore stdout sys.stdout = self.originalOut # Bust UDF Cache self.bust_udf_cache() os = ByteArrayOutputStream() ps = PrintStream(os) params = ArrayList() for param in script_params: params.add("%s=%s" % (param['name'],param['value'])) files = ArrayList() if script_params_file: files.add(script_params_file) try: self.grunt.parser.loadScript(script_path, params, files) self.pigServer.getExamples(None, True, ps, "json") except JavaException, e: print "java exception" print ExceptionUtils.getStackTrace(e) return HawkScriptError.getHawkScriptError(e).toJSON() except JavaError, e: print "java error" print ExceptionUtils.getStackTrace(e) return HawkScriptError.getHawkScriptError(e).toJSON()