Пакетный запрос Cassandra с использованием USEST TIMESTAMP - PullRequest
0 голосов
/ 20 октября 2018

Привет, я работаю с Кассандрой Бэтч.Кассандра выполняет оператор на основе текущей метки времени.У меня есть следующий сценарий

открытый класс CassandraBatchExample {

public static String query1="BEGIN BATCH "
        + "insert into studentbyfname(fname,lname,feeamount,rollnum)values(‘abc’,’xyz’,100,1) USING TIMESTAMP 11; "
        + "delete from  studentbyfname USING TIMESTAMP 10 where fname=‘abc’ and lname=‘xyz’;”
        + "APPLY BATCH";

public static void main(String[] args) {
    Cluster cluster = null;
    Session session =null;

    try{

         cluster = Cluster.builder().addContactPoints("127.0.0.1","127.0.0.2").build();
         session = cluster.connect("demokeyspace");
         session.execute(query1);        

    }catch(Exception e) {
            e.getMessage();
    }finally {
        session.close();
        cluster.close();
    }

}

}

Когда я выполняю приведенный выше фрагмент кода, ничего не происходит на стороне БД.Кассандре следует вставить запись в таблицу, поскольку оператор вставки внутри пакета имеет больше текущей отметки времени, чем оператор удаления.

Примечание: = Это сейчас странно, сегодня я запустил этот код и вставил запись в таблицу, ноон ведет себя неожиданным образом, иногда он вставляет записи, иногда нет.

Может кто-нибудь помочь мне в этом?Я что-то здесь упускаю.

1 Ответ

0 голосов
/ 24 октября 2018

Похоже, что отметка времени должна быть выражена в epoch Пример 1540400659000000 микросекунд.Пожалуйста, проверьте ссылки в руководстве https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlBatch.html

...