Ah okay. That makes sense for if I just want one rowID with a variety of column families. For multiple RowIDs, I'm assuming I'd use the earlier mentioned:
scan.setRange(new Range(new Key(singleRowId.getBytes(), startTime.getBytes(), "0".getBytes()), true, new Key(singleRowId.getBytes(), endTime.getBytes(), "1".getBytes()), true); On Thu, Jul 17, 2014 at 12:34 PM, Josh Elser <[email protected]> wrote: > Oh, ok, that example isn't doing *quite* what you expect it to be doing. > It's only going to match the Key which is the row of entityUID with empty > cf/cq/cv/etc. It's a little confusing at first glance. > > For the entire row, you can use the convince static method on range: > > Range.exact(entityUID) > > or the underlying constructor > > new Range(entityUID) > > > On 7/17/14, 12:21 PM, Ryan wrote: > >> Okay, that makes sense. I also tried it with scan.setRange(new Range(new >> Key(entityUID), new Key(entityUID))); to the same results. Still no >> entries being returned (and hence nothing printing to screen) when I run: >> >> //iterate through the entries and print them to the console >> for(Entry<Key,Value> entry : scan){ >> System.out.println("Printing entries from scan"); >> System.out.println(entry.getKey().toString() + " -> " + >> entry.getValue().toString()); >> } >> >> >> On Thu, Jul 17, 2014 at 12:11 PM, Josh Elser <[email protected] >> <mailto:[email protected]>> wrote: >> >> 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, >> respectively. >> >> 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 >> <[email protected] <mailto:[email protected]> >> <mailto:[email protected] <mailto:[email protected]>>> >> 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. >> >> >> >>
