2013-09-27 98 views
2

剛進入卡桑德拉。設置版本2.0.1和服務器運行正常,並且cqlsh連接並正確執行各種命令,所以我知道基礎設施是好的。CQL JDBC 1.2.5是否與cassandra-thrift-2.0.1和cassandra-clientutil-2.0.1兼容?

我有一個小的Java測試程序。我使用的是最新的Java JDK 7的OS X 10.8.3(達爾文):

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) 

因爲卡桑德拉2.0.1需要Java 7,我開始用這些庫作爲JDBC維基頁面注意:

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()拋出一個java.lang.NoClassDefFoundError用於組織/阿帕奇/節儉/ TEnum。沒問題 - 我發現在libthrift-0.9.1.jar中並將其添加到類路徑中。然後,我得到org.apache.cassandra.cql.jdbc.AbstractJdbcType的java.lang.NoClassDefFoundError。我爲AbstractJdbcType grep cassandra-jdbc-1.2.5.jar,但找不到它。我用grep抽象,我看到

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也是。

谷歌搜索org.apache.cassandra.cql.jdbc.AbstractJdbcType揭示了它在卡桑德拉 - 所有/ 1.0.0構建?也許?

我下載了1.2.5源和重建它,它不能編譯,因爲的getSchema()不ManagedConnection.java覆蓋:

class ManagedConnection extends AbstractConnection implements Connection 
... 

的getSchema()在Java 7中的java.sql是新的。連接。

我想我的混合罐,JDK的錯誤版本,或可能2.0.1和1.2.5 JDBC不兼容...?任何人都可以命名適當的一組jar來使用JDBC和v2.0.1嗎?

回答

1

不,它不是。

我查問題日誌維基。其他人報告說JDBC 1.2.5不支持2.0。
此外,似乎有很多精力集中在Datastax本地驅動程序及其最終的JDBC層上。在這項新的努力中,對性能更高以及節省費用感興趣。這很可能是這將是JDBC連接的未來軌跡卡桑德拉2.0+

0

我已經回滾到卡桑德拉Apache的卡桑德拉-1.2.18-bin.tar.gz。仍面臨同樣的問題。我嘗試將apache-cassandra-1.2.18/lib下的所有jar * .jar放入類庫中。問題已經解決了。包含一些缺失的庫後,問題可能會消失。

我沒有時間,但你可以嘗試通過一個放的lib/lib下一個測試哪一個是需要解決的問題。

Man Pak Hong,Dave [email protected]