只是想知道,但是您上面的 Spark 代码有效吗?我认为 Spark 不允许WHERE
分区键(a
在b
您的情况下),因为它在后台使用它们(请参阅此问题的最后一个答案):Spark Datastax Java API Select statements
在任何情况下,使用 Cassandra Spark 连接器,您都可以堆叠WHERE
子句,并且IN
可以使用List<String>
.
List<String> valuesList = new ArrayList<String>();
valuesList.Add("value2");
valuesList.Add("value3");
sc.cassandraTable("test", "cf")
.where("column1 = ?", "value1")
.where("column2 IN ?", valuesList)
.keyBy(new Function<MyCFClass, String>() {
public String call(MyCFClass _myCF) throws Exception {
return _myCF.getId();
}
});
请注意,在Cassandra/CQL 中使用 IN 的常规规则在这里仍然适用。
范围查询的功能类似:
sc.cassandraTable("test", "person")
.where("age > ?", "15")
.where("age < ?", "20")
.keyBy(new Function<Person, String>() {
public String call(Person _person) throws Exception {
return _person.getPersonid();
}
});