Dear Jack,
    Thanks!
    My keyspace is such as:
test@cqlsh> DESC KEYSPACE sky ;
CREATE KEYSPACE sky WITH replication = {'class': 'SimpleStrategy', 
'replication_factor': '3'}  AND durable_writes = true;
CREATE TABLE sky.user1 (pati int, uuid text, name text,  name2 text,
    PRIMARY KEY (pati, uuid))

    Now I am using CL=ALL during inserting and set the retry policy by such 
following codes:
RetryPolicy rp = new CustomRetryPolicy(3, 3, 2);
Cluster cluster = Cluster.builder().addContactPoint(seedIp).withCredentials(
                "test", "test")
                .withRetryPolicy(rp)
                .withLoadBalancingPolicy(
                        new TokenAwarePolicy(new DCAwareRoundRobinPolicy()))  
/*Here My Cluster has 6 nodes, all in the same DataCenter*/
                .build();

PreparedStatement insertStatement = session
                .prepare("INSERT INTO  " + tableName
                        + "(" + columns + ") "
                        + "VALUES (?, ?, ?, ?);");
insertStatement.setConsistencyLevel(ConsistencyLevel.ALL); /* Here I set the CL 
to ALL */
    I start 30 threads to insert datas, each thread uses BatchStatement to 
insert 100 rows with the same partition key but different primary key every 
time, and run 100000 times. After Inserting about 99084500 rows into C* cluster 
with many timeout exceptions I stop the inserting progress and then use 
following codes to export all the datas into local file:
String cqlstr = " select * from " + this.tableName
                                + " where pati = " + this.partitionssss[i];
PreparedStatement Statement = session
                                    .prepare(cqlstr);
                            BoundStatement bStatement = new BoundStatement(
                                    Statement);
                            bStatement.setFetchSize(10000);
iter = session.execute(bStatement).iterator();
then I write the results( in iter) to localfile. I run  3 times and all three 
results are different。

    I have set the CL to ALL when inserting datas, but why I get the different 
results when I export all datas everytime?
    By the way, I have set :  "hinted_handoff_enabled: true", is it the problem 
when the C* cluster is overloaded even if I have set the CL to ALL?

Best Regrads
jerry


At 2016-01-04 23:37:20, "Jack Krupansky" <jack.krupan...@gmail.com> wrote:

You have three choices:


1. Insert with CL=ALL, with client-level retries if the write fails due to the 
cluster being overloaded.
2. Insert with CL=QUORUM and then run repair after all data has been inserted.
3. Lower your insert rate in your client so that the cluster can keep up with 
your inserts.


Yes, Cassandra supports eventual consistency, but if you overload the cluster, 
the hinted handoff for nodes beyond the requested CL may timeout and be 
discarded, hence the need for repair.


What CL are you currently using for inserts?




-- Jack Krupansky


On Mon, Jan 4, 2016 at 9:52 AM, xutom <xutom2...@126.com> wrote:

Hi all,

    I have a C* cluster with 6 nodes. My cassandra version is 2.1.1. I start 50 
threads to insert datas into C* cluster, each thread inserts about up to 100 
million rows with the same partition key. After inserting all the datas, I 
start another app with 50 threads to export all the datas into localfile, I 
using such cqlsh: select * from table where partition_id=xxx(each partition has 
about 100 million rows). But unfortunately I fail to export all the datas: I 
run 3 times, and each time I get the different number of results. If I 
successfully export all datas, everytime I should get the same number of 
results, is it right?

Best Regards





 


Reply via email to