Cassandra выбирает запрос нескольких параметров

Использование 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, но просто не могу найти подходящий пример кода.


person Sam-T    schedule 14.12.2016    source источник
comment
Какую ошибку вы получаете обратно? CQL, сгенерированный вашим построителем запросов, кажется мне действительным: SELECT * FROM tableName WHERE column_1=1 AND column_2=9 AND column_3=50;   -  person Andy Tolbert    schedule 14.12.2016
comment
Если проблема связана с ошибкой компилятора, вам может потребоваться импортировать eq из QueryBuilder, т. е. 'import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;'   -  person Andy Tolbert    schedule 14.12.2016
comment
@ Энди Спасибо, com.datastax.driver.core.querybuilder.QueryBuilder.eq был трюком. Но как преобразовать этот набор результатов в RDD — это многоэтапный процесс? Также нет возможности выполнить мой исходный запрос с несколькими параметрами - он возвращает RDD, и я могу просто выполнить для него cassandracount (это то, что мне нужно для этой текущей проблемы)   -  person Sam-T    schedule 15.12.2016


Ответы (1)


Таким образом, синтаксис, который в итоге сработал, выглядит следующим образом: .where() .where() (no .and )

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

Не уверен, что это единственный или самый оптимальный способ

person Sam-T    schedule 15.12.2016