无法从Cassandra检索数据

时间:2011-06-01 21:44:56

标签: ubuntu cassandra

退出cli后,我无法从Cassandra中检索数据。当我回到另一个会话中获取数据时,我收到此错误:

org.apache.cassandra.db.marshal.MarshalException:无法将'jsmith'解析为十六进制字节

列系列似乎也停留在键空间中。

我还将密钥格式更改为ascii(假设用户密钥为ascii;)......并且不会保持设置状态。

有原因吗?发生了什么事?

1 个答案:

答案 0 :(得分:16)

所有“假设”命令都是临时命令,仅限于单个cli会话。对于那些现在没有坐在cli面前的人,我们指的是:

assume <cf> comparator as <type>;
assume <cf> sub_comparator as <type>;
assume <cf> validator as <type>;
assume <cf> keys as <type>;

Assume one of the attributes (comparator, sub_comparator, validator or keys)
of the given column family match specified type. The specified type will
be used when displaying data returned from the column family.

这些是纯粹的客户端

您要做的是在ColumnFamily定义中永久记录该元数据,例如:从自述文件,

create column family Users with comparator=UTF8Type and default_validation_class=UTF8Type and key_validation_class=UTF8Type;

这与“假设”有三种不同之处:

  1. 永久记录在Cassandra
  2. Cassandra将针对插入的数据强制执行指定的类型
  3. 所有客户都可以查询并使用此元数据来处理智能事物,而不仅仅是cli
  4. 假设主要是旧数据集的解决方法,无法更新为使用“真正的”服务器端类型。