【问题标题】:Connecting to remote Cassandra Database through Eclipse通过 Eclipse 连接到远程 Cassandra 数据库
【发布时间】:2014-10-26 09:13:30
【问题描述】:

Cassandra 数据库已安装在具有以下配置的服务器计算机上: qlsh 4.1.1 |卡桑德拉 2.0.7.31 | CQL 规范 3.1.1 | Thrift 协议 19.39.0

我想通过 java 通过 eclipse 连接到一个键空间,比如“X”。

以下是我的代码:

package cassandraConnectivity; 
import java.sql.DriverManager;
import java.sql.SQLException;

public class connect{

public static java.sql.Connection con = null;

public static void main(String[] a)throws ClassNotFoundException, SQLException{
   try {
        Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver");
        con=DriverManager.getConnection("jdbc:cassandra:username/pswd@<IP>/<KS>");
        System.out.println("cassandra connection established");
        } catch (ClassNotFoundException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        } catch (SQLException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
       }
}

我还在我的 Eclipse 构建路径中添加了以下 jar 文件:

  • apache-cassandra-0.8.4.jar
  • apache-cassandra-cql-1.0.3.jar
  • apache-cassandra-thrift-0.8.4.jar
  • casssandra-clientutil-1.2.1.jar
  • cassandra-jdbc-1.2.5.jar
  • commons-lang-2.4.jar
  • guava-r08.jar
  • libthrift-0.6.jar
  • log4j-1.2.16.jar
  • slf4j-log4j12-1.6.1.jar
  • slf4j.api-1.6.1.jar

我还在安装 cassandra 的远程位置禁用了防火墙

但尽管如此,我还是遇到了一个错误:

线程“main”中的异常 org.apache.cassandra.cql.jdbc.DriverResolverException: java.net.ConnectException:连接被拒绝:连接在 org.apache.cassandra.cql.jdbc.CassandraConnection.(CassandraConnection.java:91) 在 org.apache.cassandra.cql.jdbc.CassandraDriver.connect(CassandraDriver.java:86) 在 java.sql.DriverManager.getConnection(Unknown Source) 在 java.sql.DriverManager.getConnection(Unknown Source) 在 cassandraConnectivity.connect.main(connect.java:15)

也找不到上述外部添加的jar文件的来源

请告诉我哪里出错了

【问题讨论】:

  • 你能用普通的csql客户端连接吗?此外,我可能会升级您的 cassandra jar 以更紧密地匹配服务器。
  • 您好,感谢您的回复。我还没有尝试过使用常规的 csql 客户端。另外,我测试了很多 cassandra jar 的组合,但不幸的是无法连接。

标签: java eclipse jdbc cassandra


【解决方案1】:

JDBC 驱动程序很旧。您应该使用新的本机 Java 驱动程序,您可以获取 here

【讨论】:

  • 感谢回复,我会用新的原生java驱动试试。另外我想问一下,cassandra 的 CQL hector java 客户端会是一个更好的探索选择吗?
  • 不,使用 DataStax 的本机驱动程序。 Hector 是一个较旧的基于 Thrift 的客户端,而本机驱动程序使用新的二进制协议并支持所有较新的功能。
  • 谢谢!然后将使用本机驱动程序!
  • 嗨,我关注了link,但出现错误 - 线程“主”com.datastax.driver.core.exceptions.NoHostAvailableException 中的异常:所有主机尝试查询失败...对于错误,我还检查了这个link.. 所有配置都是正确的。有什么建议/建议吗?
  • 那么您的问题要么是配置错误,要么是阻止您的客户端机器与您的 Cassandra 实例通信。
【解决方案2】:

您可能想要使用已建立的驱动程序 - 例如 Astyanax:https://github.com/Netflix/astyanax

入门页面有一些非常简单的示例:

AstyanaxContext<Keyspace> context = new AstyanaxContext.Builder()
.forCluster("ClusterName")
.forKeyspace("KeyspaceName")
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()      
    .setDiscoveryType(NodeDiscoveryType.RING_DESCRIBE)
)
.withConnectionPoolConfiguration(new ConnectionPoolConfigurationImpl("MyConnectionPool")
    .setPort(9160)
    .setMaxConnsPerHost(1)
    .setSeeds("127.0.0.1:9160")
)
.withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
.buildKeyspace(ThriftFamilyFactory.getInstance());

context.start();
Keyspace keyspace = context.getClient();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-13
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 2019-08-05
    相关资源
    最近更新 更多