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 <todd@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