问题
I am having problems trying to query a wide row in Cassandra 1.2.4 When I tried to query the row using the Cassandra-cli, I obtain this error:
Frame size (75209759) larger than max length (15728640)! org.apache.thrift.transport.TTransportException: Frame size (75209759) larger than max length (15728640)! at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:137) at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101)
I tried to change the next configuration parameters in the 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
But I obtain the same error when I tried to query the row using the Cassandra cli.
When I start cassndra in the log appears:
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...
But in the Cassandra cli the change is not reflected, is it a problem with the version that we are using?
Thanks for your help
回答1:
The max frame size needs to be set on the client too, and unfortunately it is hardcoded to 15 MB in cassandra-cli.
In general, it is much better to use paging and small messages than querying large amounts at once. You would have to significantly increase the timeout to be able to retrieve 1 GB of data and this would have other side effects.
Unfortunately cassandra-cli doesn't support retrieving part of a row. You can use cqlsh and use a paging CQL query or quickly write some python code using e.g. pycassa that would page through the columns.
来源:https://stackoverflow.com/questions/19381778/thrift-max-message-length-in-mb-not-recognized-cassandra