Cassandra选择查询多个参数

Posted

技术标签:

【中文标题】Cassandra选择查询多个参数【英文标题】:Cassandra select query multiple params 【发布时间】:2016-12-14 19:19:01 【问题描述】:

使用 casssandra 2.28、java-connector3、sparks2.0。

我正在尝试编写一个带有多个选择参数的简单查询 - 无法获得正确的语法。 单参数有效

CassandraJavaRDD<CassandraRow> rdd = javaFunc 
                .cassandraTable("test", "tests").where("ID= ?", "1");

我如何做多个参数,尝试了多种方式都失败了:

javaFunc.cassandraTable("tests", "test").where("ID= ?", "1").and("Name= ?", "John");

javaFunc.cassandraTable("tests", "test").where("ID= ?", "1"+ " and "+ "Name= ?", "John");

尝试构建语句,给出错误 - 不喜欢“eq”:

Statement s = QueryBuilder.select().all()
            .from("tableName")
            .where(eq("column_1", 1))
            .and(eq("column_2", 9))
            .and(eq("column_3", 50));

看起来像一个基本的 101 查询,但根本找不到任何合适的示例代码。

【问题讨论】:

返回什么错误?您的查询生成器生成的 CQL 在我看来是有效的:SELECT * FROM tableName WHERE column_1=1 AND column_2=9 AND column_3=50; 如果问题是编译器错误,可能需要从QueryBuilder中导入eq,即'import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;' @Andy 谢谢,com.datastax.driver.core.querybuilder.QueryBuilder.eq 是诀窍。但是如何将此结果集转换为 RDD——似乎是一个多步骤的过程?我原来的多参数查询也没有办法 - 它返回一个 RDD,我可以简单地对其进行 cassandracount (这就是我当前问题所需要的) 【参考方案1】:

所以最终起作用的语法是 .where( ).where( ) (no .and )

javaFunc.cassandraTable("tests", "test").where("ID= ?", "1").where("Name= ?", "John");

不确定这是唯一的方法还是最佳的方法

【讨论】:

以上是关于Cassandra选择查询多个参数的主要内容,如果未能解决你的问题,请参考以下文章

cassandra安装

在 Cassandra 中如何通过多个过滤器选择行?

Cassandra 2.2.1 不会开始使用 cassandra -f

Cassandra 数据库安装部署

无法启动 Cassandra:端口已在使用中

禁用 Spring Boot 启动器 Cassandra 进行单元测试