I'll update this.  Thanks.




On 11/16/11 12:17 PM, "lars hofhansl" <[email protected]> wrote:

>Hi Mark,
>good find. I think that works by accident and the book is wrong.
>"row" +  new byte[] {0} will use byte[].toString() and actually result in
>something like: "row[B@152b6651", which (again accidentally) sorts past
>rowN.
>"row" + new byte[] {255} is not better, though.
>
>You'd have to construct a byte array that is terminated by 255.
>An easy way to do that is: byte[] row = new byte[] {'r','o','w',-1}
>
>We need to fix the book.
>
>-- Lars
>
>
>
>________________________________
>From: Mark <[email protected]>
>To: [email protected]
>Sent: Wednesday, November 16, 2011 7:59 AM
>Subject: Scans and lexical sorting
>
>Section 5.7.3 of the HBase book displays a scan operation:
>
>HTable htable = ...      // instantiate HTable
>
>Scan scan = new Scan();
>scan.addColumn(Bytes.toBytes("cf"),Bytes.toBytes("attr"));
>scan.setStartRow( Bytes.toBytes("row"));
>scan.setStopRow( Bytes.toBytes("row" +  new byte[] {0}));  // note: stop
>key != start key
>for(Result result : htable.getScanner(scan)) {
>  // process Result instance
>}
>
>
>Can someone explain why the stop key is "row" plus an empty byte? The
>example says it should return all rows that start with "row" however
>wouldn't this only return a row with the exact row key of "row"?
>
>"row" < "row\000" => true
>"row\000" < "row1" => false
>
>Shouldn't the example be "row" + new byte[] {255}?
>
>"row1" < "row\255" => true
>
>Can someone please clarify?


Reply via email to