Hi Dmitriy

You can try this :

IMP_F2 = foreach IMP_F1 generate ... , FLATTEN(contentRatings);
IMP_F3 = filter IMP_F2 by vendorId==1



On Tue, Jul 20, 2010 at 1:36 PM, Dmitriy Lyubimov <dlie...@gmail.com> wrote:

> isn't i am doing the same?
>
> I actually tried to flatten bag then flatten tuple as well. It seems
> internally still construct the tree that includes projection and gives the
> same error. Which of course makes sense, it builds the vistor tree behind
> the scenes, which should contain projection sooner or later.
>
>
> i actually stumbled upon the same error in a comnpletely different context
> and i probably try to patch it (there seems to be a clear error in the
> logic
> in that place which processes both tuples and non-tuples but somehow
> ignores
> the fact of the latter and tries to cast to a Tuple anyway...
> not sure why. Perhaps the fix is just to remove the cast. But this error
> pops up second time today for me in different contexts..
>
> Thanks.
>
> -Dmitriy
>
> On Mon, Jul 19, 2010 at 10:03 PM, Jeff Zhang <zjf...@gmail.com> wrote:
>
> > It looks like a bug of Pig.
> > I try the following script:
> >
> > a = load 'data/a.txt' as (b:bag{t:tuple(f1:int,f2:int)});
> > result = foreach a generate FLATTEN(b) as c;
> > describe result;
> >
> > the output is
> > result: {c: int,f2: int}
> > The c is considered one field of tuple other than tuple
> >
> >
> > On Tue, Jul 20, 2010 at 6:00 AM, Dmitriy Lyubimov <dlie...@gmail.com>
> > wrote:
> >
> > > Hi,
> > >
> > > I would greatly appreciate somebody's help with the following pig error
> > > during MR
> > >
> > > all mappers fail with the following stack trace
> > >
> > > java.lang.ClassCastException: java.lang.Integer cannot be cast to
> > > org.apache.pig.data.Tuple
> > >        at
> > >
> >
> org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POProject.getNext(POProject.java:389)
> > >        at
> > >
> >
> org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POIsNull.getNext(POIsNull.java:152)
> > >        at
> > >
> >
> org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.PONot.getNext(PONot.java:71)
> > >        at
> > >
> >
> org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POAnd.getNext(POAnd.java:67)
> > >        at
> > >
> >
> org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POFilter.getNext(POFilter.java:148)
> > >        at
> > >
> >
> org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator.processInput(PhysicalOperator.java:272)
> > >        at
> > >
> >
> org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POLimit.getNext(POLimit.java:85)
> > >        at
> > >
> >
> org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator.processInput(PhysicalOperator.java:272)
> > >        at
> > >
> >
> org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POLocalRearrange.getNext(POLocalRearrange.java:255)
> > >        at
> > >
> >
> org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigMapBase.runPipeline(PigMapBase.java:232)
> > >        at
> > >
> >
> org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigMapBase.map(PigMapBase.java:227)
> > >        at
> > >
> >
> org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigMapBase.map(PigMapBase.java:52)
> > >        at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)
> > >        at
> org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:621)
> > >        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
> > >        at org.apache.hadoop.mapred.Child.main(Child.java:170)
> > >
> > >
> > >
> > >
> > >
> > > the pig script fragment causing this is as follows :
> > > IMP_F2 = foreach IMP_F1 generate ... , FLATTEN(contentRatings) as
> > > contentRating;
> > > IMP_F3 = filter IMP_F2 by contentRating is not null and
> > > contentRating.vendorId==1
> > >
> > > if i remove IMP_F3 line then the job goes thru but adding IMP_F3
> > > filtering causes this.
> > > describe IMP_F2 produces
> > >
> > > IMP_F2: {... ,contentRating: (vendorId: int, ... ), ... }
> > >
> > >
> > > i also tried casts like 'filter by ...
> > > (int)(contentRating.vendorId)==1 which did not change anything.
> > >
> > > Any ideas for workaround are appreciated.
> > >
> > > Thanks in advance.
> > > -Dmitriy
> > >
> >
> >
> >
> > --
> > Best Regards
> >
> > Jeff Zhang
> >
>



-- 
Best Regards

Jeff Zhang

Reply via email to