Cassandra查询语言不读取Astyanax插入的数据

时间:2013-11-25 13:45:42

标签: java apache cassandra cql3 astyanax

我已使用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的新手。

1 个答案:

答案 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是不兼容的类型,因此您可能需要重新创建表并重新加载。