If the bytes are compatible why not just use the existing sstable files after redefining the schema?
On Tue, Aug 2, 2011 at 8:06 PM, Todd Nine <t...@spidertracks.com> wrote: > Hi all, > I seem to have backed myself into a corner and I cannot easily upgrade > from a custom 0.7.4 installation to the default 0.8.2. Any help I could get > would be greatly appreciated. Below is an outline of the problem. > > Current installation: > 0.7.4 with Ed Anuff's custom composite comparators. > https://github.com/riptano/hector-composite/commit/74407df3ef97c3fa90eae9f68d84b50be3d9938e > CF Comprator Type : "DynamicComposite" > > > New installation: > 0.8.2 with Casasndra's native DynamicComposite column time. > CF Comparator Type: > "DynamicComposite(a=>AsciiType,b=>BytesType,i=>IntegerType,x=>LexicalUUIDType,l=>LongType,t=>TimeUUIDType,s=>UTF8Type,u=>UUIDType,A=>AsciiType(reversed=true),B=>BytesType(reversed=true),I=>IntegerType(reversed=true),X=>LexicalUUIDType(reversed=true),L=>LongType(reversed=true),T=>TimeUUIDType(reversed=true),S=>UTF8Type(reversed=true),U=>UUIDType(reversed=true))" > > > I cannot simply upgrade Cassandra, this fails because the comparator is > incorrectly defined for version 0.8.1 and on. My issue is that the column > family definition has changed, the bytes that are stored are compatible, I > simply need to re-define the CF and migrate the column data over. > > > Initially I was thinking I could perform a read from the rows and columns > from a single 0.7 node, then insert them into the 0.8 cluster, however I > cannot have 2 different versions of the thrift API running in the same java > JVM due to namespace conflicts. > > > Idea is to perform the following steps, if anyone has any better > suggestions, they would be greatly appreciated. > > 1. Back up all my CFs that use the dynamic composite, and copy the SSTable > out of my Keyspace's data directory to tmp > 2. Drop all CFs that use dynamic composite > 3. Re-create the CFs with the new comparator definition > 4. Using an external program directly read the 0.7 SSTables (without > starting the cassandra daemon) and insert the rows and columns into the 0.8 > cluster via thrift. > > > Can anyone point me at a good example for reading rows and columns directly > from the SSTables without using the thrift api? > > Thanks, > Todd -- Jonathan Ellis Project Chair, Apache Cassandra co-founder of DataStax, the source for professional Cassandra support http://www.datastax.com