只是想知道,上面的 Spark 代码可以工作吗?我以为 Spark 不会允许WHERE
在分区键上(a
and b
在你的情况下),因为它在幕后使用它们(参见这个问题的最后一个答案):Spark Datastax Java API Select 语句 https://stackoverflow.com/questions/26001566/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();
}
});
请注意,将 IN 与 Cassandra/CQL 结合使用的正常规则 http://docs.datastax.com/en/cql/3.1/cql/cql_reference/select_r.html?scroll=reference_ds_d35_v2q_xj__selectIN仍然在这里申请。
范围查询的功能类似:
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();
}
});