2016-11-01 71 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