Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
HBase >> mail # user >> Behavior of Filter.transform() in FilterList?

Copy link to this message
Re: Behavior of Filter.transform() in FilterList?
You want transform to only be called on filters that are "reached"?
I.e. FilterA and FilterB, FilterB.transform should not be called if a KV is already filtered by FilterA?

That's not how it works right now, transform is called in a completely different code path from the actual filtering logic.
-- Lars

----- Original Message -----
From: Christophe Taton <[EMAIL PROTECTED]>
Sent: Sunday, June 30, 2013 10:26 PM
Subject: Re: Behavior of Filter.transform() in FilterList?

On Sun, Jun 30, 2013 at 10:15 PM, Ted Yu <[EMAIL PROTECTED]> wrote:

> The clause 'family=X and column=Y and KeyOnlyFilter' would be represented
> by a FilterList, right ?
> (family=A and colymn=B) would be represented by another FilterList.

Yes, that would be FilterList(OR, [FilterList(AND, [family=X, column=Y,
KeyOnlyFilter]), FilterList(AND, [family=A, column=B])]).

So the behavior is expected.

Could you explain, I'm not sure how you reach this conclusion.
Are you saying it is expected, given the actual implementation
Or are there some other details I missed?


On Mon, Jul 1, 2013 at 1:10 PM, Christophe Taton <[EMAIL PROTECTED]> wrote:
> > Hi,
> >
> > From
> >
> >
> https://github.com/apache/hbase/blob/0.95/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FilterList.java#L183
> > ,
> > it appears that Filter.transform() is invoked unconditionally on all
> > filters in a FilterList hierarchy.
> >
> > This is quite confusing, especially since I may construct a filter like:
> >     (family=X and column=Y and KeyOnlyFilter) or (family=A and colymn=B)
> > The KeyOnlyFilter will remove all values from the KeyValues in A:B as
> well.
> >
> > Is my understanding correct? Is this an expected/intended behavior?
> >
> > Thanks,
> > C.
> >