Cassandra JDBC INSERT不能一直工作

时间:2017-10-11 18:02:41

标签: jdbc cassandra

我已经对cassandra集群执行了1000次插入。但似乎表中只有5行。这怎么可能?我知道有一种兑现机制,cassandra不会发布插入内容。但是如何最终确定插入

for (int i = 0; i < 1000; i ++ ) { 
                try { 
            String testIns = 
        "INSERT INTO keyspace.testtable ( var1, var . . . ) " + 
        "  VALUES ( "  . . . ); " 
        ; 
        session.execute( testIns ) ; 
        System.out.println("Row " + i );
                } 
                catch (Exception e) { 

                }
            } 

但是这个talbe SELECT * FROM keyspace.testtable只包含6行。为什么?如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

可能的一种方式是,因为PRIMARY KEY的基数。

Cassandra PRIMARY KEYs是独一无二的。所以如果我的表定义如下:

cassdba@cqlsh> use stackoverflow ;
cassdba@cqlsh:stackoverflow> CREATE TABLE singlePrimaryKey (
                                 key1 text PRIMARY KEY, letter1 text);

然后我插入六行......

cassdba@cqlsh:stackoverflow> INSERT INTO singleprimarykey (key1,letter1)
                                 VALUES ('A','A');
cassdba@cqlsh:stackoverflow> INSERT INTO singleprimarykey (key1,letter1)
                                 VALUES ('A','B');
cassdba@cqlsh:stackoverflow> INSERT INTO singleprimarykey (key1,letter1)
                                 VALUES ('A','C');
cassdba@cqlsh:stackoverflow> INSERT INTO singleprimarykey (key1,letter1)
                                 VALUES ('A','D');
cassdba@cqlsh:stackoverflow> INSERT INTO singleprimarykey (key1,letter1)
                                 VALUES ('A','E');
cassdba@cqlsh:stackoverflow> INSERT INTO singleprimarykey (key1,letter1)
                                 VALUES ('A','F');

当我从整个表中选择时,我看到了这一点:

cassdba@cqlsh:stackoverflow> SELECT * FROM singleprimarykey ;

 key1 | letter1
------+---------
    A |       F

(1 rows)
  

这怎么可能?

如您所见,这就是多个INSERT成为一行的方式。