我已使用Astyanax在Cassandra中插入数据,但是当我使用CQL3执行以下查询时,结果为十六进制
select * from employees1;
结果:
key | column1 | value
------------+------------------------+------------------
0x000000de | 0x646570746964 | 0x0000014d
然后我才知道Astyanax也支持CQL,然后我使用它并在Cassandra中插入记录,然后运行上面的查询并成功显示记录如下。
empid | deptid | first_name | last_name
-------+--------+------------+-----------
222 | 333 | Eric | Cartman
为什么CQL3无法读取Astyanax插入的数据?是apache cassandra不提供标准实现方式吗?背后的游戏是什么?
我是Cassandra的新手。
答案 0 :(得分:2)
我有这个确切的问题。对我来说,问题是我的表是通过cassandra-cli和bytesType比较器创建为列族的。
在cqlsh中,试试这个:
describe table employees1;
如果你看到这样的话:
CREATE TABLE "employees1" (
key blob,
column1 blob,
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
read_repair_chance=0.100000 AND
replicate_on_write='true' AND
compaction={'class': 'SizeTieredCompactionStrategy'} AND
compression={'sstable_compression': 'SnappyCompressor'};
这意味着您的表格是旧版列族。为了以可读格式查询数据(cqlsh),字段必须是除blob之外的其他内容,如varchar或int。不幸的是,我认为blob和varchar是不兼容的类型,因此您可能需要重新创建表并重新加载。