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选择查询多个参数的主要内容,如果未能解决你的问题,请参考以下文章