2016-12-16 1 views
0

J'ai installé le service de datastax cassandra et ai créé un espace de clés et mon DB fonctionne correctement.Impossible de se connecter au cluster Cassandra s'exécutant sur l'hôte local

Below are output from the nodetool status command: 
C:\Users\xxx>cd C:\Program Files\DataStax Community\apache-cassandra\bin 

C:\Program Files\DataStax Community\apache-cassandra\bin>nodetool status 
Datacenter: datacenter1 
======================== 
Status=Up/Down 
|/ State=Normal/Leaving/Joining/Moving 
-- Address Load  Tokens  Owns (effective) Host ID        Rack 
UN 127.0.0.1 229 KB  256   100.0%   d5229669-f8f2-4b06-a887-4ab91a883a74 rack1 


Also , the data is created having a keyspace. 
cqlsh:axiaglobal> use axiaglobal; 
cqlsh:axiaglobal> describe tables; 

greetings 

cqlsh:axiaglobal> select * from greetings; 

user | id | creation_date | greet 
------+----+---------------+------- 

Now when i try to connect to cassandra via Java i get the following exception: 

com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /127.0.0.1:9042 (null)) 
    at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:196) 
    at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:79) 
    at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1104) 
    at com.datastax.driver.core.Cluster.init(Cluster.java:121) 
    at com.datastax.driver.core.Cluster.connect(Cluster.java:198) 
    at com.datastax.driver.core.Cluster.connect(Cluster.java:226) 
    at com.axia.global.dao.cassandra.service.CassandraApp.main(CassandraApp.java:29) 


Piece of code which makes a call to Cassandra is listed below: 

package com.axia.global.dao.cassandra.service; 

import java.net.InetAddress; 
import java.net.UnknownHostException; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.data.cassandra.core.CassandraOperations; 
import org.springframework.data.cassandra.core.CassandraTemplate; 

import com.axia.global.model.cassandra.Person; 
import com.datastax.driver.core.Cluster; 
import com.datastax.driver.core.Session; 
import com.datastax.driver.core.querybuilder.QueryBuilder; 
import com.datastax.driver.core.querybuilder.Select; 

public class CassandraApp { 

    private static final Logger LOG = LoggerFactory.getLogger(CassandraApp.class); 

    private static Cluster cluster; 
    private static Session session; 

    public static void main(String[] args) { 

     try { 
     cluster = Cluster.builder().addContactPoints("127.0.0.1").build(); 

     session = cluster.connect("axiaglobal"); 

     CassandraOperations cassandraOps = new CassandraTemplate(session); 

     Select s = QueryBuilder.select().from("greetings"); 


     } catch (Exception e) { 
     e.printStackTrace(); 
     } 

    } 
    } 

Je ne parviens pas à comprendre où je me trompe et pourquoi ma connexion omet de se connecter à cassandra quelqu'un peut me aider avec elle?

J'ai essayé de mettre en place ce qui suit: rpc_address: 0.0.0.0 broadcast_rpc_address: 1.2.3.4 et même cela n'a pas fonctionné.

+0

vous pouvez donc exécuter des requêtes de cqlsh? – root545

+1

Assurez-vous d'utiliser les versions appropriées. Spring Data Cassandra 1.4.x ne supporte que Cassandra 2.x, pas 3.x. – mp911de

+1

J'étais toi j'éviterais le printemps-données-cassandra tous ensemble. spring-data-cassandra utilise des choses comme 'SELECT COUNT (*)' et 'BATCH' implicitement et incorrectement dans les coulisses. – Aaron

Répondre