But there is an error while running on newer version.
16/07/26 10:24:43 INFO property.AppProps: using
app.id: F27E30B5EA624039B70E482B50755CB7
16/07/26 10:24:44 INFO flow.Flow: [MyJobName] executed rule registry: MapReduceHadoopRuleRegistry, completed as: ILLEGAL, in: 00:00.733
16/07/26 10:24:44 INFO flow.Flow: [MyJobName] rule registry: MapReduceHadoopRuleRegistry, found assembly to be malformed
Exception in thread "main" cascading.flow.planner.PlannerException: registry: MapReduceHadoopRuleRegistry, phase: PostPipelines, failed on rule: RemoveMalformedHashJoinPipelineTransformer, see attached source element-graph
at cascading.flow.planner.rule.RuleExec.performTransform(RuleExec.java:418)
at cascading.flow.planner.rule.RuleExec.performMutation(RuleExec.java:224)
at cascading.flow.planner.rule.RuleExec.executeRulePhase(RuleExec.java:176)
at cascading.flow.planner.rule.RuleExec.planPhases(RuleExec.java:123)
at cascading.flow.planner.rule.RuleExec.exec(RuleExec.java:84)
at cascading.flow.planner.rule.RuleSetExec.execPlannerFor(RuleSetExec.java:153)
at cascading.flow.planner.rule.RuleSetExec$3.call(RuleSetExec.java:336)
at cascading.flow.planner.rule.RuleSetExec$3.call(RuleSetExec.java:328)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: too many captured primary elements
at cascading.flow.planner.iso.transformer.RemoveBranchGraphTransformer.transformGraphInPlaceUsing(RemoveBranchGraphTransformer.java:58)
at cascading.flow.planner.iso.transformer.RecursiveGraphTransformer.transform(RecursiveGraphTransformer.java:118)
at cascading.flow.planner.iso.transformer.RecursiveGraphTransformer.transform(RecursiveGraphTransformer.java:72)
at cascading.flow.planner.rule.RuleTransformer.transform(RuleTransformer.java:85)
at cascading.flow.planner.rule.RuleExec.performTransform(RuleExec.java:414)
... 13 more
One thing that might be helpful is that, for business requirement, I have to iterate in a Assembly multiple times to call a number of buffers. the result of each buffer is merged and returned. With new version of cascading also, there is no error if iteration is upto 2. Here is the snippet of code:
Pipe[] myPipe1Collection = new Pipe[myCount];
for (int i = 0; i < myCount; i++)
{
//param1 and param2 vary on each iteration which determines internal logic
Buffer myFirstBuffer = new MyFirstBuffer(param1, param2,..., paramN);
Pipe myPipe1 = new Pipe("myPipeName"+i, previousPipe);
mbrRiskScorePipes[i]=new GroupBy(myPipe1,groupFields,sortFields,true);
mbrRiskScorePipes[i] = new Every(mbrRiskScorePipes[i], myFirstBuffer, Fields.RESULTS);
//similar for other buffers
}
Pipe myTail1Pipe = new Merge(myPipe1Collection);
//merging other buffers as well
I don't want to change my working code base. Please help me figure out the problem. What actually is "too many captured primary elements" ?