[ https://issues.apache.org/jira/browse/PIG-747?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12844229#action_12844229 ]
Justin Hu commented on PIG-747: ------------------------------- The following code is reported caused same error: // code register /homes/ciemo/yahoo-piggy-bank/java/build/math.jar; A = load 'one.txt' using PigStorage() as ( one: int ); B = foreach A { random = math.RANDOMINT(100000000); generate one, random as r1, random as r2, ((random != random) ? 'bad' : 'good'); }; describe B; dump B; // end code The conditional assignment calls "random" twice. Besides, "random" is called 4 times total, and the conditional assignment is based on the last 2 calls, which is independent on the first 2 calls (r1 & r2). If we want the last field relating with the 2nd & 3rd fields, we shall call "random" twice: // code register /homes/ciemo/yahoo-piggy-bank/java/build/math.jar; A = load 'one.txt' using PigStorage() as ( one: int ); B = foreach A { random = math.RANDOMINT(100000000); generate one, random as r1, random as r2; }; C = foreach B generate r1, r2, ((r1 != r2) ? 'bad' : 'good') as flag; // end code > Logical to Physical Plan Translation fails when temporary alias are created > within foreach > ------------------------------------------------------------------------------------------ > > Key: PIG-747 > URL: https://issues.apache.org/jira/browse/PIG-747 > Project: Pig > Issue Type: Bug > Affects Versions: 0.4.0 > Reporter: Viraj Bhat > Assignee: Daniel Dai > Fix For: 0.8.0 > > Attachments: physicalplan.txt, physicalplanprob.pig, PIG-747-1.patch > > > Consider a the pig script which calculates a new column F inside the foreach > as: > {code} > A = load 'physicalplan.txt' as (col1,col2,col3); > B = foreach A { > D = col1/col2; > E = col3/col2; > F = E - (D*D); > generate > F as newcol; > }; > dump B; > {code} > This gives the following error: > ======================================================================================================================================= > Caused by: > org.apache.pig.backend.hadoop.executionengine.physicalLayer.LogicalToPhysicalTranslatorException: > ERROR 2015: Invalid physical operators in the physical plan > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.LogToPhyTranslationVisitor.visit(LogToPhyTranslationVisitor.java:377) > at > org.apache.pig.impl.logicalLayer.LOMultiply.visit(LOMultiply.java:63) > at > org.apache.pig.impl.logicalLayer.LOMultiply.visit(LOMultiply.java:29) > at > org.apache.pig.impl.plan.DependencyOrderWalkerWOSeenChk.walk(DependencyOrderWalkerWOSeenChk.java:68) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.LogToPhyTranslationVisitor.visit(LogToPhyTranslationVisitor.java:908) > at > org.apache.pig.impl.logicalLayer.LOForEach.visit(LOForEach.java:122) > at org.apache.pig.impl.logicalLayer.LOForEach.visit(LOForEach.java:41) > at > org.apache.pig.impl.plan.DependencyOrderWalker.walk(DependencyOrderWalker.java:68) > at org.apache.pig.impl.plan.PlanVisitor.visit(PlanVisitor.java:51) > at > org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.compile(HExecutionEngine.java:246) > ... 10 more > Caused by: org.apache.pig.impl.plan.PlanException: ERROR 0: Attempt to give > operator of type > org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.Divide > multiple outputs. This operator does not support multiple outputs. > at > org.apache.pig.impl.plan.OperatorPlan.connect(OperatorPlan.java:158) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.plans.PhysicalPlan.connect(PhysicalPlan.java:89) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.LogToPhyTranslationVisitor.visit(LogToPhyTranslationVisitor.java:373) > ... 19 more > ======================================================================================================================================= -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.