2

У меня возникли некоторые проблемы с фильтрацией разъема искры cassandra для java. Cassandra позволяет фильтровать последний столбец ключа раздела с предложением IN. Фильтр коннектора Spark 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) 

Как COUNT я указать положение, в котором используется в запросе CQL в искру? Как задать запросы диапазона?

ответ

2

Просто интересно, но работает ли ваш код искры выше работы? Я думал, что искра не допустит WHERE на ключи разделов (a и b в вашем случае), так как он использует их под капотом (см последний ответ на этот вопрос): Spark Datastax Java API Select statements

В любом случае, с Кассандрой 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(); 
       } 
      }); 

Обратите внимание, что normal rules of using IN with Cassandra/CQL по-прежнему применяются здесь.

Диапазон запросов действуют аналогичным образом:

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(); 
       } 
      }); 
+0

Да искра работает на ключе секционирования в том, где статьи. Я пропустил b столбец ключа раздела (a, b) над кодом искры. Оба а и b должны присутствовать в предложении where. sc.cassandraTable («test», «cf_text»). где («a =?», «af»). где («b =?», «df»). toArray.foreach (println) – 107

+0

спасибо. Создание списка работает для меня – 107