Java mit Cassandra verbinden

Korvinus

Mitglied
Hallo,

ich habe die Aufgabe Daten aus Cassandra von unserem Server herauszuziehen.
Die Daten möchte ich später in Objekte speichern, vergleichen und bearbeiten.
Anschließend sollen die Daten wieder hochgeladen werden in Cassandra.
Die Sicherheitsrelevanten Daten habe ich mit xxx gekennzeichnet,
aber sie funktionieren. Kollegen arbeiten damit ich.

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


class Import {

public static void main(String[] args) {
String serverIp = "xxx.xxx.xxx.xxx";
String keyspace = "xxx";
String user = "xxx";
String password = "xxx";

Session session;
String cqlStatement;
Cluster cluster = Cluster.builder()
.addContactPoints(serverIp)
.withCredentials(user, password)
.build();

session = cluster.connect(keyspace);

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

Ich bekomme allerdings folgende Fehlermeldungen:

"C:\Program Files\Java\jdk-9.0.1\bin\java" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2017.3.1\lib\idea_rt.jar=50967:C:\Program Files\JetBrains\IntelliJ IDEA 2017.3.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\Micha\IdeaProjects\Lieferantendatenbank\out\production\Lieferantendatenbank;C:\Program Files\Java\jdk-9.0.1\lib\src.zip;C:\Program Files\Java\jdk-9.0.1\lib\deploy.jar;C:\Program Files\Java\jdk-9.0.1\lib\javaws.jar;C:\Program Files\Java\jdk-9.0.1\lib\jrt-fs.jar;C:\Program Files\Java\jdk-9.0.1\lib\plugin.jar;C:\Program Files\Java\jdk-9.0.1\lib\java.jnlp.jar;C:\Program Files\Java\jdk-9.0.1\lib\ant-javafx.jar;C:\Program Files\Java\jdk-9.0.1\lib\javafx-swt.jar;C:\Program Files\Java\jdk-9.0.1\lib\jdk.deploy.jar;C:\Program Files\Java\jdk-9.0.1\lib\jdk.javaws.jar;C:\Program Files\Java\jdk-9.0.1\lib\jdk.plugin.jar;C:\Program Files\Java\jdk-9.0.1\lib\guava-16.0.1.jar;C:\Program Files\Java\jdk-9.0.1\lib\plugin-legacy.jar;C:\Program Files\Java\jdk-9.0.1\lib\jdk.plugin.dom.jar;C:\Program Files\Java\jdk-9.0.1\lib\slf4j-api-1.7.5.jar;C:\Program Files\Java\jdk-9.0.1\lib\slf4j-api-1.7.25.jar;C:\Program Files\Java\jdk-9.0.1\lib\slf4j-ext-1.7.25.jar;C:\Program Files\Java\jdk-9.0.1\lib\netty-3.9.0.Final.jar;C:\Program Files\Java\jdk-9.0.1\lib\metrics-core-3.0.2.jar;C:\Program Files\Java\jdk-9.0.1\lib\slf4j-jdk14-1.7.25.jar;C:\Program Files\Java\jdk-9.0.1\lib\jul-to-slf4j-1.7.25.jar;C:\Program Files\Java\jdk-9.0.1\lib\jcl-over-slf4j-1.7.25.jar;C:\Program Files\Java\jdk-9.0.1\lib\slf4j-migrator-1.7.25.jar;C:\Program Files\Java\jdk-9.0.1\lib\osgi-over-slf4j-1.7.25.jar;C:\Program Files\Java\jdk-9.0.1\lib\log4j-over-slf4j-1.7.25.jar;C:\Program Files\Java\jdk-9.0.1\lib\slf4j-api-1.7.25-sources.jar;C:\Program Files\Java\jdk-9.0.1\lib\slf4j-ext-1.7.25-sources.jar;C:\Program Files\Java\jdk-9.0.1\lib\slf4j-jcl-1.7.25-sources.jar;C:\Program Files\Java\jdk-9.0.1\lib\slf4j-nop-1.7.25-sources.jar;C:\Program Files\Java\jdk-9.0.1\lib\slf4j-jdk14-1.7.25-sources.jar;C:\Program Files\Java\jdk-9.0.1\lib\cassandra-driver-core-2.0.2.jar;C:\Program Files\Java\jdk-9.0.1\lib\jul-to-slf4j-1.7.25-sources.jar;C:\Program Files\Java\jdk-9.0.1\lib\slf4j-simple-1.7.25-sources.jar;C:\Program Files\Java\jdk-9.0.1\lib\slf4j-android-1.7.25-sources.jar;C:\Program Files\Java\jdk-9.0.1\lib\slf4j-log4j12-1.7.25-sources.jar;C:\Program Files\Java\jdk-9.0.1\lib\jcl-over-slf4j-1.7.25-sources.jar;C:\Program Files\Java\jdk-9.0.1\lib\osgi-over-slf4j-1.7.25-sources.jar;C:\Program Files\Java\jdk-9.0.1\lib\log4j-over-slf4j-1.7.25-sources.jar" Import
Jan. 03, 2018 10:31:19 VORM. com.datastax.driver.core.FrameCompressor$SnappyCompressor <clinit>
WARNUNG: Cannot find Snappy class, you should make sure the Snappy library is in the classpath if you intend to use it. Snappy compression will not be available for the protocol.
Jan. 03, 2018 10:31:19 VORM. com.datastax.driver.core.FrameCompressor$LZ4Compressor <clinit>
WARNUNG: Cannot find LZ4 class, you should make sure the LZ4 library is in the classpath if you intend to use it. LZ4 compression will not be available for the protocol.
Exception in thread "main" com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /127.0.0.1:9042 (com.datastax.driver.core.TransportException: [/127.0.0.1:9042] Cannot connect))
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 Import.main(Import.java:21)
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.jboss.netty.util.internal.ByteBufferUtil (file:/C:/Program%20Files/Java/jdk-9.0.1/lib/netty-3.9.0.Final.jar) to method java.nio.DirectByteBuffer.cleaner()
WARNING: Please consider reporting this to the maintainers of org.jboss.netty.util.internal.ByteBufferUtil
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Process finished with exit code 1

Ich weiß nicht genau wo das Problem liegt.
Hat Jemand vielleicht eine Idee was ich machen soll?
 
WARNING: Please consider reporting this to the maintainers of org.jboss.netty.util.internal.ByteBufferUtil
Sagt doch alles, oder?
Intern in dieser Bibliothek tritt ein Fehler auf. Und der soll den Entwicklern der genannten Package gemeldet werden, denke ich.
 
Ja, aber es kann ja nicht die Lösung sein einen Fehler an Entwickler eines Packages zu melden.
Das Programm muss ja irgendwie laufen. Wisst ihr vielleicht eine Alternative oder Workaround?
Ich habe auch gehört es kann mit inkompatiblen Versionen zusammen hängen.
Leider mache ich das zum ersten mal und weiß nicht genau was ich jetzt machen soll.
 
OK, aber neben dem Fehler, der zu berichten wäre, gibt es noch 3 andere, die mir sofort ins Auge stechen.

Jan. 03, 2018 10:31:19 VORM. com.datastax.driver.core.FrameCompressor$SnappyCompressor <clinit>
WARNUNG: Cannot find Snappy class, you should make sure the Snappy library is in the classpath if you intend to use it. Snappy compression will not be available for the protocol.

Da stimmt irgendwas mit einem Classpath nicht.

Jan. 03, 2018 10:31:19 VORM. com.datastax.driver.core.FrameCompressor$LZ4Compressor <clinit>
WARNUNG: Cannot find LZ4 class, you should make sure the LZ4 library is in the classpath if you intend to use it. LZ4 compression will not be available for the protocol.

Hier dasselbe.

Exception in thread "main" com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /127.0.0.1:9042 (com.datastax.driver.core.TransportException: [/127.0.0.1:9042] Cannot connect))
Hier kann offensichtlich mit dem Server nicht verbunden werden. Hast du die richtigen Daten?
 
Hallo.

Ich sehe bei dir nur serverIp aber kein Port?
Der Port in der Fehlermeldung 9042 ist vermutlich nicht richtig.

Grüße
 
Ja, die Daten sind korrekt, da mein Arbeitskollege mit seinem PHP-Skript auch mit diesen Daten zugreifen kann.
Der Server ist auch online und läuft. Mein Java-Programm bekommt allerdings keine Verbindung hin.

Ist das mein Classpath?
C:\Program Files\Java\jdk-9.0.1\lib
 
Hallo.

Ich sehe bei dir nur serverIp aber kein Port?
Der Port in der Fehlermeldung 9042 ist vermutlich nicht richtig.

Grüße
Wo kann ich den Port einstellen? Wenn ich den Port einstelle mit xxx.xxx.xxx.xxx😛ort funktioniert es auch nicht.
Die IP lautet auch nicht 127.0.0.1, sondern ist eine öffentliche IP-Adresse im Internet vom Server.
 
Nein, es läuft unter einer anderen IP-Adresse.
Wir haben einen Server auf den ich zugreifen möchte.
Das läuft momentan nicht lokal
 
Tue ich ja. 185.48.xxx.57 ist die IP.
Ich kann die IP-Adresse auch anpingen.
Und wie gesagt bei Kollegen läuft die Verbindung mittels php

String serverIp = "185.48.xxx.57";
String keyspace = "xxx";
String user = "xxx";
String password = "xxx";

Session session;
String cqlStatement;
Cluster cluster = Cluster.builder().addContactPoint(serverIp).withPort(9042).withCredentials(user, password).build();
 
Exception in thread "main" com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /127.0.0.1:9042 (com.datastax.driver.core.TransportException: [/127.0.0.1:9042] Cannot connect))

Was mich aber wundert ist, dass in der Fehlermeldung speziell deine Maschine steht.

Also da ich das Problem noch nicht so hatte, kann dir evtl. ein anderer helfen oder Google hilft.

Sorry
 
So ich habe jetzt nochmal von neu begonnen. Ich habe Ubuntu 16.04 mit Java8 und Intellij installiert.
Ich habe auch Cassandra installiert und zum laufen gebracht (lokal)
Kann mir Jemand eine Schritt für Schritt anleitung geben, was ich tun muss um:

1. Cassandra einzurichten, sodass ich eine Testdatenbank habe
2. In IntelliJ mittels Java auf Cassandra zugreifen zu können um Daten zu ziehen
3. Diese Daten dann in Java bearbeitn zu können.


=======================================
Muss ich folgendes irgendwo einbinden? Wenn ja wie?
=======================================
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.3.0</version>
</dependency>

Note that the object mapper is published as a separate artifact:

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

The ‘extras’ module is also published as a separate artifact:

Copy
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-extras</artifactId>
<version>3.3.0</version>
</dependency>
=======================================
Was ist Maven? Was hat das mit Maven zutun?
=======================================

=======================================
Wie kann ich die imports machen? Bisher hat er die Daten nie gefunden
=======================================
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Host;
import com.datastax.driver.core.Metadata;
import com.datastax.driver.core.Session;


Später möchte ich natürlich immernoch Daten vom richtigen Ubuntu Server mit Cassandra Daten abgreifen.
Nur ich wollte erstmal schauen wie das Ganze lokal funktioniert.
 

Neue Themen


Zurück
Oben