2016-12-14 5 views
0

Использование casssandra 2.28, java-connector3, sparks2.0.Cassandra select query multiple params

Я пытаюсь написать простой запрос с несколькими параметрами выбора - неспособный получить синтаксис справа. Single парам работает

CassandraJavaRDD<CassandraRow> rdd = javaFunc 
       .cassandraTable("test", "tests").where("ID= ?", "1"); 

Как я несколько PARAMS, пытался несколько способов все терпеть неудачу:

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

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

Пробовал заявление сборки, дает ошибку - не нравится "эк":

Statement s = QueryBuilder.select().all() 
      .from("tableName") 
      .where(eq("column_1", 1)) 
      .and(eq("column_2", 9)) 
      .and(eq("column_3", 50)); 

Похоже, что базовый 101 запрос, но просто не может найти suita пример кода.

+0

Что ошибка вы возвращаетесь? CQL, сгенерированный вашим построителем запросов, выглядит справедливо для меня: SELECT * FROM tableName WHERE column_1 = 1 AND column_2 = 9 AND column_3 = 50; –

+0

Если проблема связана с ошибкой компилятора, вам может потребоваться импортировать eq из QueryBuilder, т. Е. Импортировать статический файл com.datastax.driver.core.querybuilder.QueryBuilder.eq; –

+0

@ Andy Спасибо, com.datastax.driver.core.querybuilder.QueryBuilder.eq был трюк. Но как мне преобразовать этот набор результатов в RDD - кажется, это многоступенчатый процесс? Также нет способа для моего исходного многопараметрического запроса - он возвращает RDD, и я могу просто сделать cassandracount на нем (это то, что мне нужно для этой текущей проблемы) –

ответ

1

Так синтаксис, который, наконец, работал в .где() .где() (нет .И)

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

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