2016-11-01 77 views
1

我想從我的項目(這將讓我們升級cassandra的版本)使用pycassa本地協議。我的架構使用pycassa定義,因此它使用緊湊的存儲創建的列家族,它有3列其不是複合主鍵的一部分(我知道這不是由CQL協議允許的。)
架構沒有完全從Thrift協議轉換到CQL協議

的版本我目前的Cassandra集羣是2.0.17。當我做「顯示模式」使用節儉協議的模式來爲:

create column family store 
    with column_type = 'Standard' 
    and comparator = 'CompositeType(org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.LongType),org.apache.cassandra.db.marshal.AsciiType,org.apache.cassandra.db.marshal.AsciiType)' 
    and default_validation_class = 'DoubleType' 
    and key_validation_class = 'AsciiType' 
    and column_metadata = [ 
     {column_name : 'something1', 
     validation_class : AsciiType}, 
     {column_name : 'something2', 
     validation_class : AsciiType}] 


但是,當我檢查了本地協議的架構,它缺少「欄3」和「價值」欄。它出來,如下所示:現在

CREATE TABLE store (
    key ascii, 
    column1 bigint, 
    column2 ascii, 
    something1 ascii, 
    something2 ascii, 
    PRIMARY KEY ((key), column1, column2) 
) WITH COMPACT STORAGE AND 
CLUSTERING ORDER BY (column1 DESC, column2 ASC) 


,因爲這種差異,我無法從pycassa在客戶端本地協議轉換。我一直無法找到任何解決此問題的方法,並確保本機協議能夠看到正確的模式。有什麼可以建議我解決這個問題嗎?

回答

1

簡而言之,修改添加缺失列的表。

它看起來像你沒有任何列的元數據的欄3我不知道它們是什麼類型的,如果他們只是ASCII以及你應該能夠做到以下幾點:

ALTER TABLE store ADD column3 ascii; 
ALTER TABLE store ADD value ascii; 
+0

我已經在商店裏有很多數據。我懷疑那些數據會回到這個新的模式,如果我只是改變表格,因爲數據實際上已經存在於Thrift協議中。此外,Thrift協議已在_comparator_和_default_validation_class_下具有_value_和_column3_詳細信息 – Nitin