web-dev-qa-db-fra.com

Comment connecter Cassandra en utilisant la classe Java

Je fais cela pour connecter cassandra.Mais mon code retourne une erreur .. Voici mon code

public class CassandraConnection {

public static void main(String[] args) {
    String serverIp = "166.78.10.41";
    String keyspace = "gamma";
    CassandraConnection connection;

    Cluster cluster = Cluster.builder()
            .addContactPoints(serverIp)
            .build();

    Session session = cluster.connect(keyspace);


    String cqlStatement = "SELECT * FROM TestCF";
    for (Row row : session.execute(cqlStatement)) {
        System.out.println(row.toString());
    }

}
}

c'est le journal des erreurs ..

Echec de l'exécution de l'objectif sur le projet CassandraConnection: Impossible de résoudre les dépendances du projet com.mycompany: CassandraConnection: jar: 1.0-SNAPSHOT: Les artefacts suivants n'ont pas pu être résolus: org.specs2: scalaz-effect_2.11.0-SNAPSHOT: jar: 7.0. 1-SNAPSHOT, org.scalaz: scalaz-effect_2.9.3: jar: 7.1.0-SNAPSHOT: impossible de trouver l'artefact org.specs2: scalaz-effect_2.11.0-SNAPSHOT: jar: 7.0.1-SNAPSHOT -> [Aide 1 ]

Pour voir la trace complète de la pile des erreurs, réexécutez Maven avec le commutateur -e . Relancez Maven en utilisant le commutateur -X pour activer la journalisation de débogage complète.

Pour plus d'informations sur les erreurs et les solutions possibles, veuillez lire les articles suivants: [Aide 1] http://cwiki.Apache.org/confluence/display/MAVEN/DependencyResolutionException

29
Mandrek

Avez-vous fait des recherches sur le sujet?

Choisir un chauffeur

Vous avez besoin d’un moyen de communiquer avec cassandra. La meilleure option est d’utiliser une API de haut niveau. Vous avez un large éventail de choix ici, mais lorsque nous examinons la question de haut niveau, il y a en réalité deux choix.

  1. Pilotes basés sur CQL - Abstraction de niveau supérieur de ce que fait l'épargne. En outre, nouvel outil, les sociétés fournissant un support/une documentation pour cassandra recommandent que les nouvelles applications de cassandra soient basées sur CQL.
  2. Disques basés sur Thrift - ont accès à un stockage de bas niveau, il est donc plus facile de se tromper.

Je vais utiliser pilote CQL de Datastax .

Téléchargez et construisez le pilote à partir du repo github OU de datastax, utilisez maven et ajoutez les dépendances suivantes:

<dependency>
  <groupId>com.datastax.cassandra</groupId>
  <artifactId>cassandra-driver-core</artifactId>
  <version>2.1.3</version>
</dependency>

<dependency>
  <groupId>com.datastax.cassandra</groupId>
  <artifactId>cassandra-driver-mapping</artifactId>
  <version>2.1.2</version>
</dependency>

Choisir Maven est une bonne idée, car il gérera toutes vos dépendances, mais si vous n'utilisez pas Maven, vous en apprendrez au moins sur la gestion des bocaux et la lecture des traces de pile.


Code

Le documentation du pilote avance bien. Si vous êtes coincé à le lire, la documentation contient de nombreux exemples.

Je vais utiliser les deux variables suivantes tout au long des exemples.

String serverIP = "127.0.0.1";
String keyspace = "system";

Cluster cluster = Cluster.builder()
  .addContactPoints(serverIP)
  .build();

Session session = cluster.connect(keyspace);

// you are now connected to the cluster, congrats!

Lis

String cqlStatement = "SELECT * FROM local";
for (Row row : session.execute(cqlStatement)) {
  System.out.println(row.toString());
}

Créer/Mettre à jour/Supprimer

// for all three it works the same way (as a note the 'system' keyspace cant 
// be modified by users so below im using a keyspace name 'exampkeyspace' and
// a table (or columnfamily) called users

String cqlStatementC = "INSERT INTO exampkeyspace.users (username, password) " + 
                      "VALUES ('Serenity', 'fa3dfQefx')";

String cqlStatementU = "UPDATE exampkeyspace.users " +
                      "SET password = 'zzaEcvAf32hla'," +
                      "WHERE username = 'Serenity';";

String cqlStatementD = "DELETE FROM exampkeyspace.users " + 
                      "WHERE username = 'Serenity';";

session.execute(cqlStatementC); // interchangeable, put any of the statements u wish.


Autre code utile

Créer un espace de clé

String cqlStatement = "CREATE KEYSPACE exampkeyspace WITH " + 
  "replication = {'class':'SimpleStrategy','replication_factor':1}";

session.execute(cqlStatement);

Création d'une ColumnFamily (aka table)

// based on the above keyspace, we would change the cluster and session as follows:
Cluster cluster = Cluster.builder()
  .addContactPoints(serverIP)
  .build();
Session session = cluster.connect("exampkeyspace");

String cqlStatement = "CREATE TABLE users (" + 
                      " username varchar PRIMARY KEY," + 
                      " password varchar " + 
                      ");";

session.execute(cqlStatement);
127
Lyuben Todorov

Pour vous connecter à cassandra à partir d'un programme Java, vous devez ajouter une dépendance de base au programme. Ajoutez les dépendances suivantes au programme. Liste des dépendances Maven:

<dependency>
    <groupId>com.datastax.cassandra</groupId>
    <artifactId>cassandra-driver-core</artifactId>
    <version>3.6.0</version>
</dependency>

<dependency>
  <groupId>com.datastax.cassandra</groupId>
  <artifactId>cassandra-driver-mapping</artifactId>
  <version>3.6.0</version>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.25</version>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.25</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>21.0</version>
</dependency>

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-all</artifactId>
    <version>4.1.20.Final</version>
</dependency>

<dependency>
    <groupId>com.codahale.metrics</groupId>
    <artifactId>metrics-core</artifactId>
    <version>3.0.2</version>
</dependency>

Programme Java simple pour se connecter avec cassandra à un espace de clés et récupérer les valeurs d'une table

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;

public class Test {

    public static void main(String[] args) {
        String serverIp = "127.0.0.1";
        String keyspace = "test";

        Cluster cluster = Cluster.builder()
                .addContactPoints(serverIp)
                .build();

        Session session = cluster.connect(keyspace);


        String cqlStatement = "SELECT * FROM emp";
        for (Row row : session.execute(cqlStatement)) {
            System.out.println(row.toString());
        }

        session.close();
    }
}

Repo Hub Git pour le programme en tant que projet maven: GitURL

0
Vishnu Prabhakar