LoadFunc and StoreFunc implementations should be instanciated only once in the FE and once in the BE per call in a given script -------------------------------------------------------------------------------------------------------------------------------
Key: PIG-2654 URL: https://issues.apache.org/jira/browse/PIG-2654 Project: Pig Issue Type: Improvement Reporter: Julien Le Dem I'm running the following script: {code} A = LOAD 'foo' USING Loader(); STORE A INTO 'bar' USING Storer(); {code} Using instrumented Loader an Storer I get the following result: * 7 instances of Loader * 6 instances of Storer each instance gets an ID and logs the calls to its methods: {code} Loader(1).<init> called by org.apache.pig.parser.LogicalPlanBuilder.validateFuncSpec(LogicalPlanBuilder.java:791) Loader(2).<init> called by org.apache.pig.parser.LogicalPlanBuilder.getAbolutePathForLoad(LogicalPlanBuilder.java:417) Loader(2).relativeToAbsolutePath called by org.apache.pig.parser.LogicalPlanBuilder.getAbolutePathForLoad(LogicalPlanBuilder.java:421) Loader(3).<init> called by org.apache.pig.parser.LogicalPlanBuilder.validateFuncSpec(LogicalPlanBuilder.java:791) Loader(4).<init> called by org.apache.pig.parser.LogicalPlanBuilder.getAbolutePathForLoad(LogicalPlanBuilder.java:417) Storer(1).<init> called by org.apache.pig.parser.LogicalPlanBuilder.validateFuncSpec(LogicalPlanBuilder.java:791) Storer(2).<init> called by org.apache.pig.parser.LogicalPlanBuilder.getAbolutePathForStore(LogicalPlanBuilder.java:478) Storer(2).setStoreFuncUDFContextSignature called by org.apache.pig.parser.LogicalPlanBuilder.getAbolutePathForStore(LogicalPlanBuilder.java:481) Storer(2).relToAbsPathForStoreLocation called by org.apache.pig.parser.LogicalPlanBuilder.getAbolutePathForStore(LogicalPlanBuilder.java:484) Storer(3).<init> called by org.apache.pig.newplan.logical.relational.LOStore.<init>(LOStore.java:55) Storer(3).setStoreFuncUDFContextSignature called by org.apache.pig.newplan.logical.relational.LOStore.setSignature(LOStore.java:129) Loader(5).<init> called by org.apache.pig.newplan.logical.relational.LOLoad.getLoadFunc(LOLoad.java:77) Loader(5).setUDFContextSignature called by org.apache.pig.newplan.logical.relational.LOLoad.getLoadFunc(LOLoad.java:78) Loader(5).getSchema called by org.apache.pig.newplan.logical.relational.LOLoad.getSchemaFromMetaData(LOLoad.java:151) Loader(5).getSchema called by org.apache.pig.newplan.logical.relational.LOLoad.getSchemaFromMetaData(LOLoad.java:151) Loader(5).getSchema called by org.apache.pig.newplan.logical.relational.LOLoad.getSchemaFromMetaData(LOLoad.java:151) Loader(5).getSchema called by org.apache.pig.newplan.logical.relational.LOLoad.getSchemaFromMetaData(LOLoad.java:151) Loader(5).getSchema called by org.apache.pig.newplan.logical.relational.LOLoad.getSchemaFromMetaData(LOLoad.java:151) Loader(5).getSchema called by org.apache.pig.newplan.logical.relational.LOLoad.getSchemaFromMetaData(LOLoad.java:151) Storer(3).setStoreFuncUDFContextSignature called by org.apache.pig.newplan.logical.relational.LOStore.setSignature(LOStore.java:129) Loader(5).getSchema called by org.apache.pig.newplan.logical.relational.LOLoad.getSchemaFromMetaData(LOLoad.java:151) Loader(5).getSchema called by org.apache.pig.newplan.logical.relational.LOLoad.getSchemaFromMetaData(LOLoad.java:151) Loader(5).getSchema called by org.apache.pig.newplan.logical.relational.LOLoad.getSchemaFromMetaData(LOLoad.java:151) Storer(3).setStoreLocation called by org.apache.pig.newplan.logical.rules.InputOutputFileValidator$InputOutputFileVisitor.visit(InputOutputFileValidator.java:68) Storer(3).getOutputFormat called by org.apache.pig.newplan.logical.rules.InputOutputFileValidator$InputOutputFileVisitor.visit(InputOutputFileValidator.java:80) Loader(5).getSchema called by org.apache.pig.newplan.logical.relational.LOLoad.getSchemaFromMetaData(LOLoad.java:151) Loader(5).setLocation called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler.getJob(JobControlCompiler.java:389) Storer(4).<init> called by org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POStore.getStoreFunc(POStore.java:232) Storer(4).setStoreFuncUDFContextSignature called by org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POStore.getStoreFunc(POStore.java:233) Storer(4).setStoreLocation called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler.getJob(JobControlCompiler.java:480) Storer(5).<init> called by org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POStore.getStoreFunc(POStore.java:232) Storer(5).setStoreFuncUDFContextSignature called by org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POStore.getStoreFunc(POStore.java:233) Storer(5).setStoreLocation called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.setLocation(PigOutputFormat.java:170) Storer(5).getOutputFormat called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.checkOutputSpecsHelper(PigOutputFormat.java:203) Loader(6).<init> called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigInputFormat.getSplits(PigInputFormat.java:254) Loader(6).setUDFContextSignature called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigInputFormat.passLoadSignature(PigInputFormat.java:187) Loader(6).setLocation called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigInputFormat.getSplits(PigInputFormat.java:266) Loader(6).getInputFormat called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigInputFormat.getSplits(PigInputFormat.java:272) Storer(6).<init> called by org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POStore.getStoreFunc(POStore.java:232) Storer(6).setStoreFuncUDFContextSignature called by org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POStore.getStoreFunc(POStore.java:233) Storer(6).setStoreLocation called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.setLocation(PigOutputFormat.java:170) Storer(6).getOutputFormat called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputCommitter.getCommitters(PigOutputCommitter.java:92) Storer(6).setStoreLocation called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.setLocation(PigOutputFormat.java:170) Loader(7).<init> called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigInputFormat.getLoadFunc(PigInputFormat.java:158) Loader(7).setUDFContextSignature called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigInputFormat.passLoadSignature(PigInputFormat.java:187) Loader(7).setLocation called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigInputFormat.mergeSplitSpecificConf(PigInputFormat.java:138) Loader(7).getInputFormat called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigInputFormat.createRecordReader(PigInputFormat.java:117) Storer(6).setStoreLocation called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.setLocation(PigOutputFormat.java:170) Storer(6).getOutputFormat called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.getRecordWriter(PigOutputFormat.java:84) Storer(6).prepareToWrite called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat$PigRecordWriter.<init>(PigOutputFormat.java:125) Loader(7).setUDFContextSignature called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigInputFormat.passLoadSignature(PigInputFormat.java:187) Loader(7).prepareToRead called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigRecordReader.initialize(PigRecordReader.java:182) Loader(7).getNext called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigRecordReader.nextKeyValue(PigRecordReader.java:194) Storer(6).putNext called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat$PigRecordWriter.write(PigOutputFormat.java:139) Loader(7).getNext called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigRecordReader.nextKeyValue(PigRecordReader.java:194) Storer(6).putNext called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat$PigRecordWriter.write(PigOutputFormat.java:139) Loader(7).getNext called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigRecordReader.nextKeyValue(PigRecordReader.java:194) Storer(6).putNext called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat$PigRecordWriter.write(PigOutputFormat.java:139) Loader(7).getNext called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigRecordReader.nextKeyValue(PigRecordReader.java:194) Storer(6).setStoreLocation called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.setLocation(PigOutputFormat.java:170) Storer(6).setStoreLocation called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.setLocation(PigOutputFormat.java:170) Storer(4).setStoreLocation called by org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.setLocation(PigOutputFormat.java:170) {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira