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~ > >>> > >> > >> > > > >
