The general pattern is to use get_range_slices as you describe, also http://wiki.apache.org/cassandra/FAQ#iter_world

Note you should be used the key fields on the KeyRange not the tokens. 

There have been a few issues around with using the RandomPartitioner so it may be best to get on  0.6.6 if you can. The data will be out of order, but you should still be able to iterate it. Please send examples if it's not working for you. 

hope that helps
Aaron
 

On 20 Oct, 2010,at 12:36 PM, Robert <keyboard.opera...@gmail.com> wrote:

For this case, the order doesn't matter, I just need to page over all of the data X rows at a time.  When I use column_family.get_range from pycassa and pass in the last key as the new start key, I do not get all of the results.  I have found a few posts about this, but I did not find a recommended implementation.


I tried this solution, but this does not return all of the results.

cheers,
--r2


On Tue, Oct 19, 2010 at 3:33 PM, Tyler Hobbs <ty...@riptano.com> wrote:
I don't think I understand what you're trying to do. Do you want to page over the whole column
family X rows at a time?  Does it matter if the rows are in order?

- Tyler



On Tue, Oct 19, 2010 at 5:22 PM, Robert <keyboard.opera...@gmail.com> wrote:
I have a similar question.  Is there a way to divide this into multiple requests?  I am using Cassandra v0.6.4, RandomPartitioner, and the pycassa library.

Can I use get_range_slices with a start_token=0, and then recalculate the token from the last value key returned until it equals it loops around the entire ring?

cheers,
--Robert


On Tue, Oct 19, 2010 at 2:02 PM, Aaron Morton <aa...@thelastpickle.com> wrote:
KeyRange as a count on it, the default is 100. 

For the ordering, double check you are using the OrderPreserving partitioner It it's still out of order send an example. 

Cheers
Aaron


On 20 Oct, 2010,at 09:39 AM, Wicked J <wickedj2...@gmail.com> wrote:

Hi,
I inserted 500 rows (records) in Cassandra and I'm using the following code to retrieve all the inserted rows. However, I'm able to get only 100 rows (in a random order). I'm using Cassandra v0.6.4 with OrderPreserving Partition on a single node/instance.
How can I get all the rows inserted? i.e. the other 400 rows.

Thanks

== Code ==

KeyRange keyRange = new KeyRange();
keyRange.start_key = start; //1
keyRange.end_key = end; //500

SliceRange sliceRange = new SliceRange();
sliceRange.setStart(new byte[]{});
sliceRange.setFinish(new byte[]{});

SlicePredicate slicePredicate = new SlicePredicate();
slicePredicate.setSlice_range(sliceRange);

ColumnParent columnParent = new ColumnParent(COLUMN_FAMILY);
keySlices = client.get_range_slices(KEYSPACE, columnParent, slicePredicate, keyRange, ConsistencyLevel.ONE);
System.out.println("Key Slice Size="+keySlices.size());






Reply via email to