我正面临着针对java的spark cassandra连接器过滤的一些问题 . Cassandra允许使用IN子句过滤分区键的最后一列 . 例如
create table cf_text
(a varchar,b varchar,c varchar, primary key((a,b),c))
Query : select * from cf_text where a ='asdf' and b in ('af','sd');
sc.cassandraTable("test", "cf_text").where("a = ?", "af").toArray.foreach(println)
我如何指定在spark中的CQL查询中使用的IN子句?如何指定范围查询?
1 回答
只是想知道,但你的Spark代码上面有效吗?我认为Spark不允许在分区键上使用
WHERE
(在你的情况下是a
和b
),因为它在引擎盖下使用它们(参见这个问题的最后答案):Spark Datastax Java API Select statements在任何情况下,使用Cassandra Spark连接器,您可以堆叠
WHERE
子句,并且可以使用List<String>
指定IN
.请注意,normal rules of using IN with Cassandra/CQL仍然适用于此处 .
范围查询以类似的方式运行: