On Mon, Sep 13, 2010 at 10:07 AM, John Sichi <[email protected]> wrote:
> Hey hbasers,
>
> I'm working on pushing predicates down from Hive, and starting with a very 
> basic case (equality on a simple key).  This ends up looking like a get, but 
> for now it still uses TableInputFormatBase since later we'll be extending it 
> to range scans as well.
>
> After converting the key to byte [] startRow, I do the following, since 
> stopRow is exclusive rather than inclusive:
>
>    byte [] stopRow = new byte[startRow.length + 1];
>    System.arraycopy(startRow, 0, stopRow, 0, startRow.length);
>    scan.setStartRow(startRow);
>    scan.setStopRow(stopRow);
>
> I just wanted to confirm
>
> (a) Is this the correct way to create a stopRow for a point lookup (appending 
> a single zero byte to make the successor lexical value)?
>


That looks like it should work.

You've seen InclusiveStopFilter?


> (b) Do I also need a WhileMatchFilter, or is setStartRow+setStopRow 
> guaranteed to do all the filtering directly?
>

You don't need to add filters if you are using setStartRow,
setStopRow.  Internally they do the business themselves [1].

Let us know if it gives you trouble John,
St.Ack

1. The 'business' is performed in the HRegion scanner.  Here is where
it is created 
http://hbase.apache.org/docs/r0.89.20100726/xref/org/apache/hadoop/hbase/regionserver/HRegion.html#2299
 Here in the internal 'next' on the region scanner is where it acts on
stop row: 
http://hbase.apache.org/docs/r0.89.20100726/xref/org/apache/hadoop/hbase/regionserver/HRegion.html#2394

Reply via email to