6

我在尝试在 Cassandra 1.2.4 中查询宽行时遇到问题当我尝试使用 Cassandra-cli 查询行时,我收到此错误:

帧大小 (75209759) 大于最大长度 (15728640)!org.apache.thrift.transport.TTransportException:帧大小(75209759)大于最大长度(15728640)!在 org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:137) 在 org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101)

我尝试更改 Cassandra.yaml 中的下一个配置参数:

# Frame size for thrift (maximum field length).
thrift_framed_transport_size_in_mb: 1024

# The max length of a thrift message, including all fields and
# internal thrift overhead.
thrift_max_message_length_in_mb: 1048

但是当我尝试使用 Cassandra cli 查询该行时,我得到了同样的错误。

当我在日志中启动 cassndra 时出现:

INFO 14:48:34,133 Using TFramedTransport with a max frame size of 1073741824 bytes.
 INFO 14:48:34,137 Using synchronous/threadpool thrift server on localhost : 9160
 INFO 14:48:34,137 Listening for thrift clients...

但是在 Cassandra cli 中没有反映变化,是我们使用的版本有问题吗?

谢谢你的帮助

4

1 回答 1

10

最大帧大小也需要在客户端上设置,不幸的是它在 cassandra-cli 中被硬编码为 15 MB。

一般来说,使用分页和小消息比一次查询大量消息要好得多。您必须显着增加超时才能检索 1 GB 的数据,这会产生其他副作用。

不幸的是 cassandra-cli 不支持检索行的一部分。您可以使用 cqlsh 并使用分页 CQL 查询或使用例如 pycassa 快速编写一些 python 代码,该代码将通过列进行分页。

于 2013-10-22T19:03:41.890 回答