Thanks Lars for explaining this. 

Did you mean that expressing in German is easier :-)



On Mar 2, 2012, at 6:44 PM, lars hofhansl <[email protected]> wrote:

> I finally looked into it. This is expected.
> 
> Filters are executed (by a StoreScanner/ScanQueryMatcher) per store. We have 
> a store per column family.
> The important part to observe here is that there is no intrinsic order 
> between KeyValues that only differ in the column family, that is by design so 
> that stores can be handled in parallel (even though we do not currently do 
> that).
> 
> The filter behaves as if every store is scanned in parallel. Each store 
> starts in the beginning, and then each store needs to skip ahead using the 
> filter.
> This is why it seemed to you that NEXT_ROW only seeks to the next column 
> family, because you see the beginning of the scan for the next column family.
> 
> Makes sense? It's a bit hard to explain in English :)
> 
> -- Lars
> 
> From: NNever <[email protected]>
> To: [email protected]; Ted Yu <[email protected]> 
> Sent: Wednesday, February 22, 2012 7:20 PM
> Subject: Re: HBase0.92: In Filter, ReturnCode.NEXT_ROW may lead to next 
> columnFamily but not next row?
> 
> Thanks Ted, I don't know mailing list strips attachment before.
> 
> Here is the attache:
> 
> TestFilter.java:    http://pastebin.com/zC6EF8pX
> and the log:  http://pastebin.com/RsKJSHcn
> 
> 2012/2/23 Ted Yu <[email protected]>
> 
> > N:
> > Can you publish your code on pastebin or somewhere ?
> > Mailing list strips attachment.
> >
> > Thanks
> >
> >
> > On Tue, Feb 21, 2012 at 5:47 PM, NNever <[email protected]> wrote:
> >
> >> Attach is my test customFilter code --- TestFilter.
> >> It just simply extends FilterBase and do some system.out...
> >> You can just try any Table has more than one columnFamily like below:
> >>
> >> *Scan scan = new Scan();*
> >> *scan.setFilter(new TestFilter());*
> >> *hTable.getScanner(scan);*
> >>
> >> and look the HBase's log...
> >>
> >> It seems there is truely a BUG here....When filterKeyValue return
> >> ReturnCode.NEXT_ROW, it jump to next columnFamily but not next row...
> >> also there is one thing strange, why the fitlerRow() not be called?
> >>
> >> 2012/2/21 <[email protected]>
> >>
> >> The javadoc says filterRow() will still be called.
> >>>
> >>> Can you show us your filterRow() code ?
> >>>
> >>> Thanks
> >>>
> >>>
> >>>
> >>> On Feb 21, 2012, at 7:28 AM, NNever <[email protected]> wrote:
> >>>
> >>> > Hi~
> >>> >
> >>> > One customFilter,  Override filterKeyValue(KeyValue v).
> >>> > when the filter filterKeyValue a row's first keyValue, it will return
> >>> > "ReturnCode.NEXT_ROW" to jump to next row.
> >>> >
> >>> > But what infact is, the result changes when there are more than one
> >>> > columnFamily:(here are some logs)
> >>> >
> >>> > [filterRowKey] PERSONA1
> >>> > [filterKeyValue] family:info | qualifier:active | value:\x00
> >>> > [filterKeyValue] returnCode is NEXT_ROW
> >>> > [reset]
> >>> > [filterRowKey] PERSONA2
> >>> > [filterKeyValue] family:info | qualifier:active | value:\x00
> >>> > [filterKeyValue] returnCode is NEXT_ROW
> >>> > [reset]
> >>> > [filterRowKey] PERSONA3
> >>> > [filterKeyValue] family:info | qualifier:active | value:\x00
> >>> > [filterKeyValue] returnCode is NEXT_ROW
> >>> > [filterKeyValue] family:npo | qualifier:059201 | value:
> >>> > [filterKeyValue] returnCode is NEXT_ROW
> >>> > [reset]
> >>> > [filterRowKey] PERSONA4
> >>> > [filterKeyValue] family:cert | qualifier:certSN | value:
> >>> > PERSONAL4314120472582094317514215676313826416149
> >>> > [filterKeyValue] returnCode is NEXT_ROW
> >>> > [filterKeyValue] family:info | qualifier:active | value:\x00
> >>> > [filterKeyValue] returnCode is NEXT_ROW
> >>> > [filterKeyValue] family:npo | qualifier:059201 | value:
> >>> > [filterKeyValue] returnCode is NEXT_ROW
> >>> > [reset]
> >>> >
> >>> > the Table schema is
> >>> > User
> >>> > info:name, info:address, info:active.... (info family, every record has
> >>> > values)
> >>> > npo:xxxx.....(npo family may be not exist)
> >>> > cert:certSN, cert:certType....(cert family may be not exist)
> >>> >
> >>> > As you can see from the log, once a row has more than one family
> >>> values,
> >>> > The ReturnCode.NEXT_ROW will not jump to next row but pass the left
> >>> > qualifier values and jump to next fmaily.
> >>> > Why? It's a bug or just design to be like this?
> >>> > Thanks~
> >>>
> >>
> >>
> >
> 
> 

Reply via email to