German might have been easier, although I really meant "natural language" as opposed to code :-)
________________________________ From: "[email protected]" <[email protected]> To: lars hofhansl <[email protected]> Cc: "[email protected]" <[email protected]> Sent: Friday, March 2, 2012 6:52 PM Subject: Re: HBase0.92: In Filter, ReturnCode.NEXT_ROW may lead to next columnFamily but not next row? 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~ >>>> >>> >>> >> > > >
