UnavailableException () in Apache-Cassandra 0.8.2

I am new to Apache-Cassandra 0.8.2. I am trying to insert some data, but getting this exception.

Exception in thread "main" UnavailableException ()
    at org.apache.cassandra.thrift.Cassandra $ insert_result.read (Cassandra.java:14902)
    at org.apache.cassandra.thrift.Cassandra $ Client.recv_insert (Cassandra.java:858)
    at org.apache.cassandra.thrift.Cassandra $ Client.insert (Cassandra.java:830)
    at TestCassandra.main (TestCassandra.java:166)

My code is:

public class TestCassandra {

    public static void createKeySpace (Cassandra.Client client, String ksname)
        throws TException, InvalidRequestException, UnavailableException, UnsupportedEncodingException, NotFoundException, TimedOutException, SchemaDisagreementException {

        KsDef ksdef = new KsDef ();
        ksdef.name = ksname;
        ksdef.strategy_class = "NetworkTopologyStrategy";    
        List l = new ArrayList ();        
        ksdef.cf_defs = l;   

        client.system_add_keyspace (ksdef); 
        System.out.println ("KeySpace Created");


    }

    public static void createColumnFamily (Cassandra.Client client, String ksname, String cfname)
        throws TException, InvalidRequestException, UnavailableException, UnsupportedEncodingException, NotFoundException, TimedOutException, SchemaDisagreementException {

        CfDef cfd = new CfDef (ksname, cfname);
        client.system_add_column_family (cfd);
        System.out.println ("ColumnFamily Created");

    }

    public static void main (String [] args)
            throws TException, InvalidRequestException, UnavailableException, UnsupportedEncodingException, NotFoundException, TimedOutException, SchemaDisagreementException {

        TTransport tr = new TFramedTransport (new TSocket ("localhost", 9160));
        TProtocol proto = new TBinaryProtocol (tr);
        Cassandra.Client client = new Cassandra.Client (proto);
        tr.open ();

       String keySpace = "Keyspace1";
       String columnFamily = "Users";

       // Drop the Keyspace 

       client.system_drop_keyspace (keySpace);

       // Creating keyspace


       KsDef ksdef = new KsDef ();
       ksdef.name = keySpace;
       ksdef.strategy_class = "NetworkTopologyStrategy";    
       List l = new ArrayList ();        
       ksdef.cf_defs = l;

       client.system_add_keyspace (ksdef); 
       System.out.println ("KeySpace Created");

       // createKeySpace (client, keySpace);

       client.set_keyspace (keySpace);

       // Creating column Family

       CfDef cfd = new CfDef (keySpace, columnFamily);
       client.system_add_column_family (cfd);
       System.out.println ("ColumnFamily Created");

       // createColumnFamily (client, keySpace, columnFamily);

       ColumnParent parent = new ColumnParent (columnFamily);

       Column description = new Column ();
       description.setName ("description" .getBytes ());
       description.setValue ("I'm a nice guy" .getBytes ());
       description.setTimestamp (System.currentTimeMillis ());

       ConsistencyLevel consistencyLevel = ConsistencyLevel.ONE;
       ByteBuffer rowid = ByteBuffer.wrap ("0" .getBytes ());

// Line No. 166
       client.insert (rowid, parent, description, consistencyLevel);
       System.out.println ("Record Inserted ...");

       tr.flush ();       
       tr.close ();
    }


}

Can someone help me why this is so?

+5
source share
2 answers

The reason for UnavailableExceptionis explained by the fact that in your method createKeySpaceyou have never indicated replication_factorto determine your key space KsDef.

2 Strategy, NetworkTopologyStrategy SimpleStrategy . Cassandra 0.8 KsDef replication_factor, , ( , . ., strategy_class SimpleStrategy):

KsDef ksdef = new KsDef();
ksdef.name = ksname;
ksdef.strategy_class = SimpleStrategy.class.getName(); 

//Set replication factor
if (ksdef.strategy_options == null) {
    ksdef.strategy_options = new LinkedHashMap<String, String>();
}

//Set replication factor, the value MUST be an integer
ksdef.strategy_options.put("replication_factor", "1");

//Cassandra must now create the Keyspace based on our KsDef
client.system_add_keyspace(ksdef);

NetworkTopologyStrategy (. ).

Apache Cassandra 0.8 Java.

+6

, ( Unavailable), KsDef 10 , .

, 10 , , QUORUM- QUORUM , QUORUM (.. 10/2 + 1 = 6 .)

QUORUM.

+1

All Articles