我们正在运行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命令(因为这是分区键的一部分) .