accumulo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Josh Elser <>
Subject Re: Scanning over a range of column families?
Date Thu, 17 Jul 2014 16:11:00 GMT
I think by default both Keys provided to a Range are inclusive, when 
using the 4-argument Range constructor, the 2nd and 4th arguments are 
boolean controlling the inclusivity of the 1st and 3rd argument, 

If you invoke any of the fetchColumnFamily/fetchColumns methods, they 
match up with the columns you're scanning over. It is possible to 
preclude yourself from getting columns if you 'fetch' other columns. If 
you don't invoke these methods, Accumulo will return you all columns.

Perhaps you can narrow down your problem using a range for the whole row 
and then try more restricted ranges.

On 7/17/14, 11:59 AM, Ryan wrote:
> Thanks, that's much simpler. I looked into the API docs for the Key
> class and found a way to get it down to just: scan.setRange(new
> Range(new Key(entityUID, startTime), new Key(entityUID, endTime)));
> Unfortunately, that doesn't return any results. Is the scan inclusive?
> Is it not including the byte array values that is messing it up? I know
> the problem isn't with the connection because scanning the table without
> any range values from my program works.
> On Thu, Jul 17, 2014 at 11:09 AM, Josh Elser <
> <>> wrote:
>     Sure is. Just provide a start Key and end Key.
>     scan.setRange(new Range(new Key(singleRowId.getBytes(),
>     startTime.getBytes(), "0".getBytes()), true, new
>     Key(singleRowId.getBytes(), endTime.getBytes(), "1".getBytes()), true);
>     The range spans the single row you are interested in, and you can
>     specify up to the column qualifier for the start and end key. If you
>     don't specify the visibility of timestamp, you would end up getting
>     all key-values (cv,timestamp,value) between those two keys.
>     On 7/17/14, 11:03 AM, Ryan wrote:
>         Hi, I'm learning Accumulo and am attempting to write a Java
>         client that
>         scans over an Accumulo table using a single row id and a range
>         of column
>         families. Going through the API, the closest thing I've found to
>         this
>         feature is the 'bound method:
>         scan.setRange(new Range(entity).bound(new
>         Column(startTime.getBytes(),
>         "0".getBytes(), "public".getBytes()), new Column(endTime.getBytes(),
>         "1".getBytes(), "public".getBytes())));
>         Is there a simpler way to do this without a need to include the
>         visibility or column qualifier?
>         The API version I'm using is 1.5.1.

View raw message