Cassandra列名称尾随空白字符

时间:2014-01-13 10:52:31

标签: cassandra hector

我刚刚开始使用Cassandra,通过执行以下查询,在Cassandra下载页面上使用Getting started上给出的命令创建了一个简单的ColumnFamily和一些数据。

CREATE TABLE users (
   user_id int PRIMARY KEY,
   fname text,
   lname text
);

INSERT INTO users (user_id,  fname, lname)
   VALUES (1745, 'john', 'smith');
INSERT INTO users (user_id,  fname, lname)
   VALUES (1744, 'john', 'doe');
INSERT INTO users (user_id,  fname, lname)
   VALUES (1746, 'john', 'smith');

我的用于获取数据的Hector代码

RangeSlicesQuery<String, String, String> rangeSlicesQuery 
                = HFactory.createRangeSlicesQuery(keyspace, STR, STR, STR);
            rangeSlicesQuery.setColumnFamily(columnFamily)
            .setColumnNames(" fname ", " lname ")
            .setKeys("6", "5")
            .setRowCount(row_count);
QueryResult<OrderedRows<String, String, String>> result = rangeSlicesQuery.execute();

但是当我使用Cassandra中的Hector API在Column name中获取数据时,它包含空格,就像列名fname将是:'fname'。 对于来自Java Hector API的查询,我需要使用相同的列名和空格来获取或保存数据 任何人都有任何想法,我做错了什么,或者我该如何去除那些尾随空间 感谢

1 个答案:

答案 0 :(得分:0)

在创建列族时,使用“WITH COMPACT STORAGE”修复了此问题。 讨论是here

我使用了Allan Elder指出的Cassandra Java Driver而不是Hector,而我的列名空格尾随问题已经解决了。
有关如何使用Cassandra Java Driver的文档是herethis项目将找到jars。 感谢