我正在尝试在我的项目中从使用 pycassa 转移到本机协议(这将让我们升级 cassandra 的版本)。我的模式是使用 pycassa 定义的,因此它使用紧凑存储创建了一个列族,并且它有 3 个不属于复合主键的列(我知道 CQL 协议不允许这样做。)
我当前 Cassandra 集群的版本是 2.0.17。当我使用 thrift 协议“显示模式”时的模式是:
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}]
但是当我检查本机协议的架构时,它缺少“column3”和“value”列。结果如下:
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 转换到本机协议。我找不到任何东西来克服这个问题并确保本机协议看到正确的模式。你有什么可以建议我解决这个问题的吗?