我正在尝试使用JDBC驱动程序连接到Cassandra。我的Cassandra版本是2.2.4和java 1.7.0_101:
Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver");
Connection con = DriverManager.getConnection("jdbc:cassandra://10.11.15.242:9160/edgeview");
在哪里" edgeview"是我的键空间。我已经使用9160端口连接到cassandra因为它不允许我在没有libthrift库(交叉语言库)的情况下连接。
如果我试图查询cassandra它总是给我错误"字符串索引超出范围:-1"
似乎是一些兼容性问题,因为很多我的发现都说已经弃用了Cassandra 2.2+和thrift。
有关如何进行此操作的任何帮助?
提前完成
答案 0 :(得分:1)
我正在使用带有cassandra的JPA,因此使用jdbc
<persistence-unit name="Cassandra" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="javax.persistence.jdbc.driver" value="com.github.cassandra.jdbc.CassandraDriver" />
</properties>
</persistence-unit>
虽然有一个非jdbc解决方案,但您可以将jdbc与cassandra一起使用 datastax
maven依赖
com.github.zhicwu enter code here
卡桑德拉-JDBC驱动程序
0.6.1
问候
答案 1 :(得分:-1)
遵循Cassandra文档,您应该使用Datastax Java API。 Cassandra它不是一个SQL数据库,而是一个NOSQL因此有完全不同的系统。
如果您有maven项目,请在pom.xml配置文件中添加这些依赖项:
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-mapping</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-extras</artifactId>
<version>3.1.0</version>
</dependency>
这里,maven存储库URL: https://mvnrepository.com/artifact/com.datastax.cassandra/cassandra-driver-core
之后,创建你的第一个Hello Cassandra main,如下所示:
package cassandraMain;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
public class Main {
public static void main(String[] args) {
// Only a short example
// You must to take care about the several exception and the usage of the cluster and session objects...
Cluster cluster;
Session session;
// Connect to the local cluster with the keyspace demodb
cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
session = cluster.connect("demodb");
// Insert one record - only for test...
session.execute("INSERT INTO test (username, name, surname)"
+ " VALUES ('test_"+System.currentTimeMillis()+"', 'Andrea', 'Giassi')");
session.close();
cluster.close();
}
}
我希望这可以帮到你