【问题标题】:org.apache.thrift.transport.TTransportException: Read a negative frame size (-2080374784)!org.apache.thrift.transport.TTransportException:读取负帧大小(-2080374784)!
【发布时间】:2016-12-19 11:41:37
【问题描述】:

我正在尝试使用 JDBC 驱动程序连接到 Cassandra DB:

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

任何帮助将不胜感激。

【问题讨论】:

  • 我投票赞成重新提出这个问题,因为错误非常独特,下面给出的答案揭示了这个错误的唯一原因(对我来说是什么帮助了我)。

标签: java cassandra


【解决方案1】:
DriverManager.getConnection("jdbc:cassandra://10.11.15.242:9042/edgeview");

所以 9042 是本地二进制协议连接的端口,9160 是 Thrift 的端口。

您需要确定是通过 Thrift 还是 Native 进行连接,并使用适当的端口。鉴于您的错误消息,听起来 JDBC Cassandra 使用 Thrift,因此您可能需要指定 9160 作为您的端口。

当然,通过 Thrift 连接已被弃用,甚至在 Cassandra 2.2+ 中默认禁用。

【讨论】:

  • 如果我想在不使用 Thrift 的情况下进行连接,您能帮我吗?好像我不使用thrift,然后它给我跨语言错误......
  • 那你能帮我换个方式吗?
  • 我投票赞成重新提出这个问题,因为错误非常独特,下面给出的答案揭示了这个错误的唯一原因(对我来说是什么帮助了我)。
  • 如何连接到 Cassandra 3?我应该使用什么驱动程序?
  • @KaMok 您应该使用 DataStax Java 驱动程序,他们的 Git 存储库中有连接示例:github.com/datastax/java-driver/blob/3.x/driver-examples/src/…
猜你喜欢
  • 2014-06-08
  • 1970-01-01
  • 2013-08-17
  • 2016-08-18
  • 1970-01-01
  • 2019-05-08
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
相关资源
最近更新 更多