Pelops moved to github several months ago... https://github.com/s7/scale7-pelops/blob/master/src/main/java/org/scale7/cassandra/pelops/Selector.java#L1179
Cheers, -- Dan Washusen On Wednesday, 2 March 2011 at 3:35 AM, Matthew Dennis wrote: > I'm not really familiar with pelops code, but I found two implementations (~ > line 454 and ~ line 559) of getColumnsFromRows in Selector.java in pelops > trunk. > > The first uses a HashMap so it clearly isn't ordered, the second uses a > LinkedHashMap but it inserts the keys in the order returned by C* which we > already know isn't ordered. > > See http://bit.ly/egZaXi for relevant code. > > Like I said, I'm not really familiar with pelops so I could be completely off > on this, but it looks like if pelops was intending to preserve the order of > the requested keys that it's not actually doing it... > > On Wed, Feb 23, 2011 at 3:44 PM, Dan Washusen <d...@reactive.org> wrote: > > Hi Matthew, > > As you mention the map returned from multiget_slice is not order > > preserving, Pelops is doing this on the client side... > > > > Cheers, > > Dan > > > > -- > > Dan Washusen > > Sent with Sparrow > > On Wednesday, 23 February 2011 at 8:38 PM, Matthew Dennis wrote: > > > The map returned by multiget_slice (what I suspect is the underlying > > > thrift call for getColumnsFromRows) is not a order preserving map, it's a > > > HashMap so the order of the returned results cannot be depended on. Even > > > if it was a order preserving map, not all languages would be able to make > > > use of the results since not all languages have ordered maps (though > > > many, including Java, certainly do). > > > > > > That being said, it would be fairly easy to change this on the C* side to > > > preserve the order the keys were requested in, though as mentioned not > > > all clients could take advantage of it. > > > > > > On Mon, Feb 21, 2011 at 4:09 PM, cbert...@libero.it <cbert...@libero.it> > > > wrote: > > > > > > > > > > As Jonathan mentions the compareWith on a column family def. is > > > > > defines the order for the columns *within* a row... In order to > > > > > control the ordering of rows you'll need to use the > > > > > OrderPreservingPartitioner > > > > > (http://www.datastax.com/docs/0.7/operations/clustering#tokens-partitioners-ring). > > > > > > > > > > Thanks for your answer and for your time, I will take a look at this. > > > > > > > > > > As for getColumnsFromRows; it should be returning you a map of lists. > > > > > The map is insertion-order-preserving and populated based on the > > > > > provided list of row keys (so if you iterate over the entries in the > > > > > map they should be in the same order as the list of row keys). > > > > > > > > > > mmm ... well it didn't happen like this. In my code I had a CF named > > > > > comments and also a CF called usercomments. UserComments use an uuid > > > > > as row-key to keep, TimeUUID sorted, the "pointers" to the comments > > > > > of the user. When I get the sorted list of keys from the UserComments > > > > > and I use this list as row-keys-list in the GetColumnsFromRows I > > > > > don't get back the data sorted as I expect them to be. > > > > > It looks like if Cassandra/Pelops does not care on how I provide the > > > > > row-keys-list. I am sure about that cause I did something different: > > > > > I iterate over my row-keys-list and made many GetColumnFromRow > > > > > instead of one GetColumnsFromRows and when I iterate data are > > > > > correctly sorted. But this can not be a solution ... > > > > > > > > > > I am using Cassandra 0.6.9 > > > > > > > > > > I profit of your knownledge of Pelops to ask you something: I am > > > > > evaluating the migration to Cassandra 0.7 ... as far as you know, in > > > > > terms of written code, is it an heavy job? > > > > > > > > > > Best Regards > > > > > > > > > > Carlo > > > > > > > > > > > ----Messaggio originale---- > > > > > > Da: d...@reactive.org > > > > > > > > > > > > On Saturday, 19 February 2011 at 8:16 AM, cbert...@libero.it wrote: > > > > > > > Hi all, > > > > > > > I created a CF in which i need to get, sorted by time, the Rows > > > > > > > inside. Each > > > > > > > Row represents a comment. > > > > > > > > > > > > > > <ColumnFamily name="Comments" compareWith="TimeUUIDType" / > > > > > > > > > > > > > > > I've created a few rows using as Row Key a generated TimeUUID but > > > > > > > when I call > > > > > > > the Pelops method "GetColumnsFromRows" I don't get the data back > > > > > > > as I expect: > > > > > > > rows are not sorted by TimeUUID. > > > > > > > I though it was probably cause of the random-part of the > > > > > > > TimeUUID so I create > > > > > > > a new CF ... > > > > > > > > > > > > > > <ColumnFamily name="Comments2" compareWith="LongType" / > > > > > > > > > > > > > > > This time I created a few rows using the java > > > > > > > System.CurrentTimeMillis() that > > > > > > > retrieve a long. I call again the "GetColumnsFromRows" and again > > > > > > > the same > > > > > > > results: data are not sorted! > > > > > > > I've read many times that Rows are sorted as specified in the > > > > > > > compareWith but > > > > > > > I can't see it. > > > > > > > To solve this problem for the moment I've used a > > > > > > > SuperColumnFamily with an > > > > > > > UNIQUE ROW ... but I think this is just a workaround and not the > > > > > > > solution. > > > > > > > > > > > > > > <ColumnFamily name="Comments" type="Super" > > > > > > > compareWith="TimeUUIDType" > > > > > > > CompareSubcolumnsWith="BytesType"/ > > > > > > > > > > > > > > > Now when I call the "GetSuperColumnsFromRow" I get all the > > > > > > > SuperColumns as I > > > > > > > expected: sorted by TimeUUID. Why it does not happen the same > > > > > > > with the Rows? > > > > > > > I'm confused. > > > > > > > > > > > > > > TIA for any help. > > > > > > > > > > > > > > Best Regards > > > > > > > > > > > > > > Carlo > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >