accumulo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David O'Gwynn" <>
Subject Re: Thrift proxy: Python WholeRowIterator behavior
Date Sat, 12 Apr 2014 20:13:35 GMT
Hi Josh,

I guess I misspoke, the Range I'm passing is this:

Range('row0', true, 'row0\0',true)

Keeping in mind that the Thrift interface only exposes one Range
constructor (Range(Key,bool,Key,bool)), the actual call I'm passing is

Range( Key('row0',null,...), true, Key('row0\0',null,...), true )

If I scan for all entries (without WholeRowIterator), I get the full
contents of "row0". However, when I add the WholeRowIterator, it
returns nothing.

Furthermore, if I were to pass the following:

Range( Key('row0',null,...), true, Key('row1\0',null,...), true )

not only do I get both "row0" and "row1" without the WRI, I get "row1"
as a whole row with the WRI (but not "row0"). I.e. the WRI is somehow
interpreting my Range as having startKeyInclusive set to false, which
is clearly not the case.


On Sat, Apr 12, 2014 at 2:49 PM, Josh Elser <> wrote:
> Hi David,
> Looks like you're just mis-using the Range here.
> If you create a range that is ["row0", "row0"] as you denote below, that
> will only include Keys that have a rowId of "row0" with an empty colfam,
> colqual, etc. Since you want to use the WholeRowIterator, I can assume you
> want all columns in "row0". As such, ["row0", "row0\0") would be the best
> range to fetch all of the columns in that single row.
> On 4/12/2014 1:59 PM, David O'Gwynn wrote:
>> Hi all,
>> I'm working with the Python Thrift API for the Accumulo proxy service,
>> and I have a bit of odd behavior happening. I'm using Accumulo 1.5
>> (the standard one from the Accumulo website).
>> Whenever I use the WholeRowIterator with a Scanner, I cannot configure
>> the Range for that Scanner to correctly return the start row for the
>> Range. E.g. for the Range('row0',true,'row0',true) [to pull a singe
>> row], it returns zero entries. For Range('row0',true,'row1\0',true),
>> it returns only "row1".
>>  From the WholeRowIterator documentation, this behavior implies that
>> the startInclusive bit was set to False, which it clearly wasn't.
>> I've been able to hack around this issue by setting the start key to
>> Key(row=(row[:-1]+chr(ord(row[-1])-1))+'\0', inclusive=False)
>> but I'd really rather understand the correct way of using a Range
>> object in conjunction with a WholeRowIterator.
>> Thanks much,
>> David

View raw message