TL;DR
有点,但最好创建一个基于 cql3 的表并从那里继续。
首先要清楚地了解正在发生的事情,请使用 cqlsh 中的 describe 命令:
cqlsh> describe COLUMNFAMILY "USER";
CREATE TABLE "USER" (
key text,
column1 text,
value blob,
PRIMARY KEY (key, column1)
) WITH COMPACT STORAGE AND
bloom_filter_fp_chance=0.010000 AND
caching='KEYS_ONLY' AND
comment='' AND
dclocal_read_repair_chance=0.000000 AND
gc_grace_seconds=864000 AND
index_interval=128 AND
read_repair_chance=0.100000 AND
replicate_on_write='true' AND
populate_io_cache_on_flush='false' AND
default_time_to_live=0 AND
speculative_retry='NONE' AND
memtable_flush_period_in_ms=0 AND
compaction={'class': 'SizeTieredCompactionStrategy'} AND
compression={'sstable_compression': 'LZ4Compressor'};
然后您可以使用 cqlh 构建插入语句(我使用了 cqlsh):
cqlsh:test> insert into test."USER" (key, column1, value) VALUES ('epickey', 'epic column 1 text', null);
但是,如果您进行选择...
cqlsh:test> SELECT * FROM test."USER" ;
(0 rows)
完成后返回 CLI:
[default@unknown] use test;
Authenticated to keyspace: test
[default@test] list USER;
Using default limit of 100
Using default cell limit of 100
-------------------
RowKey: epickey
1 Row Returned.
Elapsed time: 260 msec(s).
我将使用的最后一个工具是 sstable2json(从 sstable 中获取所有数据,然后......将其转换为 json 表示形式)
对于 USER cf 的上述单个插入,我得到了这个:
[
{"key": "657069636b6579","columns": [["epic column 1 text","5257c34b",1381483339315000,"d"]]}
]
所以数据就在那里,但你真的无法通过 cql 访问它。
注意这都是使用 C* 2.0 和 cqlsh 4.0 (cql3) 完成的