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.



Reply via email to