Beispiel #1
0
    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
Beispiel #2
0
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()