CQL JDBC 1.2.5是否与cassandra-thrift-2.0.1和cassandra-clientutil-2.0.1兼容?

时间:2013-09-27 04:37:52

标签: java jdbc cassandra libs

刚进入卡桑德拉。设置版本2.0.1,服务器运行正常,cqlsh连接并正确执行各种命令,所以我知道基础设施没问题。

我有一个小的Java测试程序。我在OS X 10.8.3(达尔文)上使用最近的Java 7 JDK:

java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)

因为Cassandra 2.0.1需要Java 7.我开始使用这些库,如jdbc wiki页面中所述:

cassandra-jdbc-1.2.5.jar
apache-cassandra-thrift-2.0.1.jar
apache-cassandra-clientutil-2.0.1.jar

并且在调用此代码时

String driverClass = "org.apache.cassandra.cql.jdbc.CassandraDriver";
Class.forName( driverClass ).newInstance();

// mykeyspace was created in the setup example   
java.sql.Connection conn = DriverManager.getConnection("jdbc:cassandra://localhost:9160/mykeyspace");

getConnection()为org / apache / thrift / TEnum抛出java.lang.NoClassDefFoundError。没问题 - 我发现在libthrift-0.9.1.jar中并将其添加到类路径中。然后我得到org.apache.cassandra.cql.jdbc.AbstractJdbcType的java.lang.NoClassDefFoundError。我为AbstractJdbcType grep cassandra-jdbc-1.2.5.jar但找不到它。我gret for Abstract,我看到了

org/apache/cassandra/cql/jdbc/AbstractConnection.class
org/apache/cassandra/cql/jdbc/AbstractResultSet.class
org/apache/cassandra/cql/jdbc/AbstractStatement.class

我下载了旧版本的JDBC lib(1.1.2和1.2.1),但他们看不到包含org.apache.cassandra.cql.jdbc.AbstractJdbcType。

google搜索org.apache.cassandra.cql.jdbc.AbstractJdbcType显示它是在cassandra-all / 1.0.0版本中?可能?

我下载了1.2.5源并重新构建它并且无法编译,因为在ManagedConnection.java中没有覆盖getSchema():

class ManagedConnection extends AbstractConnection implements Connection
...

getSchema()是Java 7 java.sql.Connection中的新功能。

我想我混合了错误版本的jar,JDK或者可能是2.0.1而且jdbc 1.2.5不兼容......?任何人都可以将正确的罐子命名为使用JDBC和v2.0.1吗?

2 个答案:

答案 0 :(得分:1)

不,不是。

我检查了wiki问题日志。其他人报告说,JDBC 1.2.5对2.0不起作用 此外,似乎很多精力集中在Datastax本机驱动程序及其(最终)JDBC层上。在这项新的努力中,人们对提高性能和删除Thrift感兴趣。看起来这可能是未来与Cassandra 2.0 +的JDBC连接的基础。

答案 1 :(得分:0)

我已经回到了Cassandra apache-cassandra-1.2.18-bin.tar.gz。仍面临同样的问题。我尝试将所有jar * .jar放在apache-cassandra-1.2.18 / lib下的类库中。问题已经解决了。包含一些缺少的库后,问题可能会消失。

我没有时间,但您可以尝试将lib放在/ lib下逐一测试哪一个需要解决问题。

曼帕洪,戴夫 manpakhong@hotmail.com