[ https://issues.apache.org/jira/browse/PIG-1895?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13006757#comment-13006757 ]
Daniel Dai commented on PIG-1895: --------------------------------- TestEvalFunc forget to set twolevelaccess flag for the bag. Pig 0.9 does not require twolevelaccess flag. However, we saw Pig 0.9 fail with a different stack: ERROR 1000: Invalid field reference. Referenced field [guid] does not exist in schema: null. org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1067: Unable to explain alias C3 at org.apache.pig.PigServer.explain(PigServer.java:993) at org.apache.pig.tools.grunt.GruntParser.explainCurrentBatch(GruntParser.java:368) at org.apache.pig.tools.grunt.GruntParser.processExplain(GruntParser.java:300) at org.apache.pig.tools.grunt.GruntParser.processExplain(GruntParser.java:263) at org.apache.pig.tools.pigscript.parser.PigScriptParser.Explain(PigScriptParser.java:665) at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:325) at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:176) at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:152) at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:90) at org.apache.pig.Main.run(Main.java:537) at org.apache.pig.Main.main(Main.java:108) Caused by: org.apache.pig.impl.plan.PlanValidationException: ERROR 1000: Invalid field reference. Referenced field [guid] does not exist in schema: null. at org.apache.pig.newplan.logical.visitor.ColumnAliasConversionVisitor$1.visit(ColumnAliasConversionVisitor.java:114) at org.apache.pig.newplan.logical.expression.DereferenceExpression.accept(DereferenceExpression.java:83) at org.apache.pig.newplan.DependencyOrderWalker.walk(DependencyOrderWalker.java:75) at org.apache.pig.newplan.PlanVisitor.visit(PlanVisitor.java:50) at org.apache.pig.newplan.logical.optimizer.AllExpressionVisitor.visit(AllExpressionVisitor.java:114) at org.apache.pig.newplan.logical.relational.LOGenerate.accept(LOGenerate.java:240) at org.apache.pig.newplan.DependencyOrderWalker.walk(DependencyOrderWalker.java:75) at org.apache.pig.newplan.logical.optimizer.AllExpressionVisitor.visit(AllExpressionVisitor.java:104) at org.apache.pig.newplan.logical.relational.LOForEach.accept(LOForEach.java:73) at org.apache.pig.newplan.DependencyOrderWalker.walk(DependencyOrderWalker.java:75) at org.apache.pig.newplan.PlanVisitor.visit(PlanVisitor.java:50) at org.apache.pig.PigServer$Graph.compile(PigServer.java:1538) at org.apache.pig.PigServer$Graph.compile(PigServer.java:1533) at org.apache.pig.PigServer$Graph.access$200(PigServer.java:1295) at org.apache.pig.PigServer.buildStorePlan(PigServer.java:1195) at org.apache.pig.PigServer.explain(PigServer.java:956) > Class cast exception while projecting udf result > ------------------------------------------------ > > Key: PIG-1895 > URL: https://issues.apache.org/jira/browse/PIG-1895 > Project: Pig > Issue Type: Bug > Components: impl > Affects Versions: 0.7.0, 0.8.0, 0.9.0 > Reporter: Vivek Padmanabhan > Assignee: Daniel Dai > Fix For: 0.8.0 > > > Class cast exception is thrown when I try to project the result from my udf. > The udf has a defined schema DataType.BAG,DataType.LONG and DataType.INTEGER > The below is my script > {code} > Data = load 'file:/home/pvivek/Desktop/input' using PigStorage() as ( i: int > ); > AllData = group Data all parallel 1; > SampledData = foreach AllData generate org.vivek.TestEvalFunc(Data, 5) as rs; > SampledData1 = foreach SampledData generate rs.sampled; > {code} > Even though the output schema defines "sampled" as a data bag, while > processing, instead of sending only the data bag generated from the UDF , the > entire tuple was sent to the projection as result. > {code} > Exception recieved : > java.lang.ClassCastException: org.apache.pig.data.BinSedesTuple cannot be > cast to org.apache.pig.data.DataBag > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POProject.processInputBag(POProject.java:484) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POProject.getNext(POProject.java:197) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POProject.processInputBag(POProject.java:480) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POProject.getNext(POProject.java:197) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POForEach.processPlan(POForEach.java:339) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POForEach.getNext(POForEach.java:291) > at > org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigMapReduce$Reduce.runPipeline(PigMapReduce.java:434) > at > org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigMapReduce$Reduce.processOnePackageOutput(PigMapReduce.java:402) > at > org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigMapReduce$Reduce.reduce(PigMapReduce.java:382) > at > org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigMapReduce$Reduce.reduce(PigMapReduce.java:1) > at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:176) > at > org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:566) > at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:408) > at > org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:216) > {code} > This issue is happening with 0.9/0.8 and 0.7 -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira