模式未完全从Thrift协议转换为CQL协议

时间:2016-11-01 01:27:47

标签: cassandra schema pycassa cassandra-python-driver

我正试图在我的项目中使用pycassa转换为本机协议(这将让我们升级cassandra的版本)。我的模式是使用pycassa定义的,因此它使用紧凑存储创建了一个Column系列,它有3列不是复合主键的一部分(我知道CQL协议不允许这样做。)

我当前的Cassandra集群的版本是2.0.17。我做的架构"显示架构"使用节俭协议来:

flatList.RemoveAll(tn => tn.Type.Equals("DIR") && !flatList.Any(ftn => ftn.Type.Equals("FILE") && ftn.Parent.Equals(tn.Path)));


但是,当我检查本机协议上的架构时,它缺少" column3"和"价值"列。它出现如下:

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}]


现在,由于这种差异,我无法从pycassa转换到客户端的本机协议。我还没有找到任何可以解决这个问题的方法,并确保本机协议能够找到正确的架构。有什么可以建议我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

简而言之,在表格中添加缺少的列。

看起来您没有 column3 的任何列元数据我不确定它们是什么类型你也应该能够做到以下几点:

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