我正在尝试使用JDBC驱动程序连接到Cassandra数据库:
Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver");
Connection con = DriverManager.getConnection("jdbc:cassandra://10.11.15.242:9042/edgeview");
我无法连接到Cassandra。它总是给出以下错误:
org.apache.thrift.transport.TTransportException: Read a negative frame size (-2080374784)!
我在下面添加了库:
Cassandra-jdbc-1.2.5.jar
Cassandra-thrift-1.2.6.jar
Cassandra-clientutil-1.2.6.jar
libthrift-0.9.0.jar
任何帮助都将不胜感激。
答案 0 :(得分:5)
DriverManager.getConnection("jdbc:cassandra://10.11.15.242:9042/edgeview");
因此,9042是本机二进制协议连接的端口,9160是Thrift。
您需要确定是通过Thrift还是Native连接,并使用适当的端口。鉴于您的错误消息,它听起来像JDBC Cassandra使用Thrift,因此您可能需要指定9160作为您的端口。
当然,通过Thrift连接已被弃用,默认情况下甚至在Cassandra 2.2 +中禁用。