[
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.