我们正在运行Datastax Enterprise 4.8.8我们有多个应用程序使用Hector API(Thrift Communication)连接到Cassandra .

作为从Thrift通信转向CQL通信(使用Datastax Cassandra驱动程序)的一部分:我看到一个奇怪的错误:我的ColumnFamily架构中添加了一个额外的KEY列 .

ColumnFamily是使用 cassandra-cli 长时间创建的:

CREATE TABLE mykeyspace."ColumnFamilyName" (
        key blob,
        column1 text,
        value blob,
        PRIMARY KEY (key, column1)
    ) WITH COMPACT STORAGE
    AND bloom_filter_fp_chance = 0.01
    AND comment = ''
    AND dclocal_read_repair_chance = 0.0
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = 'NONE'
    AND caching = {
        'keys' : 'ALL',
        'rows_per_partition' : 'NONE'
    }
    AND compression = {
        'chunk_length_kb' : 64,
        'sstable_compression' : 'LZ4Compressor'
    }
    AND compaction = {
        'class' : 'SizeTieredCompactionStrategy',
        'min_sstable_size' : 52428800
    };

以上是从DevCenter复制的正确和预期的架构 . 相同的ColumnFamily我尝试从cqlsh看到模式,我在下面看到:

cassandra@cqlsh> DESC mykeyspace."ColumnFamilyName";

/*
Warning: Table mykeyspace."ColumnFamilyName" omitted because it has 
constructs not compatible with CQL (was created via legacy API).

近似结构,供参考:(不应该用于重现此模式)

CREATE TABLE mykeyspace."ColumnFamilyName" (
    key blob,
    column1 text,
    value blob,
    "KEY" blob,
    PRIMARY KEY (key, column1)
) WITH COMPACT STORAGE
    AND CLUSTERING ORDER BY (column1 ASC)
    AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
    AND comment = ''
    AND compaction = {'min_sstable_size': '52428800', 
       'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'}
    AND compression = {'chunk_length_kb': '64', 
       'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND dclocal_read_repair_chance = 0.0
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = 'NONE';
*/

有没有人有这种类型的问题?如果是,任何建议的解决方案没有重新创建表?额外的KEY列只能通过CQLSH而不是Devcenter UI看到 .

最后,由于这个额外的KEY列,我甚至无法运行COPY命令(因为这是分区键的一部分) .