Tag: cql3

使用CQL 3.0在集合上创建自定义索引

我一直在查看CQL 3.0 数据建模文档 ,该文档描述了带有标签的列系列歌曲,如下所示: CREATE TABLE songs ( id uuid PRIMARY KEY, title text, tags set ); 我想获得所有具有特定标签的歌曲的列表,因此我需要添加适当的索引。 我可以很容易地在title列上创建一个索引,但是如果我尝试索引一个集合的tags列,就像这样: CREATE INDEX ON songs ( tags ); 我从DataStax Java驱动程序1.0.4收到以下错误: Exception in thread “main” com.datastax.driver.core.exceptions.InvalidQueryException: Indexes on collections are no yet supported at com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:35) at com.datastax.driver.core.ResultSetFuture.extractCauseFromExecutionException(ResultSetFuture.java:269) 根据JIRA问题CASSANDRA-4511 ,看起来这可以在更高版本的Cassandra(2.1)中修复。 我目前正在使用Apache Cassandra 1.2.11,但不想升级。 根据问题CASSANDRA-5615 ,在Cassandra 1.2.6中,对集合的自定义索引有支持。 问题是,唯一可用的文档指出: Cassandra支持创建自定义索引,该索引供内部使用且超出本文档的范围。 但是,它确实建议以下语法: […]

使用DataStax Java驱动程序1.0.4使用CQL连接到Cassandra时出现exception

我在我的笔记本电脑上运行了Cassandra 1.2.11。 我可以使用nodetool和cqlsh连接到它,但是当我尝试使用DataStax 1.0.4 Java API使用CQL 3.0进行连接时,我收到以下错误: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: localhost/127.0.0.1 ([localhost/127.0.0.1] Unexpected error during transport initialization (com.datastax.driver.core.TransportException: [localhost/127.0.0.1] Channel has been closed))) at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:186) 我使用以下代码进行连接,取自DataStax文档。 我尝试了几个端口号,包括离开withPort()调用,但似乎没有任何工作。 Cluster cluster = new Cluster.Builder() .addContactPoints(“localhost”) .withPort(9160) .build(); 使用telnet我可以validationCassandra服务器肯定在我指定的每个端口上监听。 我还validation了所有必需的库jar文件都在我的类路径中,如文档中所述。

如何获得cassandra 2.2中的前5条记录

我需要帮助。 我有一个查询,按日期(不是日期+时间)和金额总和获得前5名记录组。 我写了以下内容,但它返回的所有记录不仅仅是前5条记录 CREATE OR REPLACE FUNCTION state_groupbyandsum( state map, datetime text, amount text ) CALLED ON NULL INPUT RETURNS map LANGUAGE java AS ‘String date = datetime.substring(0,10); Double count = (Double) state.get(date); if (count == null) count = Double.parseDouble(amount); else count = count + Double.parseDouble(amount); state.put(date, count); return state;’ ; CREATE OR REPLACE AGGREGATE […]

使用Datastax API(使用新的二进制协议)升级/读入/读取Cassandra数据库

我已经开始使用Cassandra database 。 我打算使用Datastax API来upsert/read Cassandra database 。 我对这个Datastax API (使用新的二进制协议)完全不Datastax API ,我也找不到很多具有一些适当示例的文档。 create column family profile with key_validation_class = ‘UTF8Type’ and comparator = ‘UTF8Type’ and default_validation_class = ‘UTF8Type’ and column_metadata = [ {column_name : crd, validation_class : ‘DateType’} {column_name : lmd, validation_class : ‘DateType’} {column_name : account, validation_class : ‘UTF8Type’} {column_name : advertising, validation_class […]

如何在CQL 3预处理语句中绑定IN子句值?

我有一张大致相似的桌子 create table mytable ( id uuid, something text, primary key (id) ); 我正在尝试创建一个具有绑定in子句的预准备语句: PreparedStatement ps = session.prepare(“select * from mytable where id IN (?)”); … UUID[] ids = { uuid1, uuid2, uuid3} ; 无论我如何表达要绑定的id,java驱动程序都会拒绝它们。 ps.bind( /*as array*/) :driver complains语句只有一个值,2提供 ps.bind( /*as comma separated string list of uuids*/) :驱动程序抱怨它想要UUID.class对象,而不是字符串 ps.bind( /*as list object*/) :驱动程序抱怨它想要UUID.class objs,而不是List.class对象 […]