2014-04-14 10 views
8

Ich habe ein Java-Projekt in IntellyJ mit Cassandra DB und ich verwende Maven 3 und Java 7. Cassandra Version ist 2.0.6. Ich habe einen Tisch mit fast 100.000 Reihen. Wenn ich das Programm laufen bekomme ich diese Ausnahme:java.sql.SQLNonTransientConnectionException: org.apache.thrift.transport.TTransportException: Frame-Größe größer als maximale Länge (16384000)!

java.sql.SQLNonTransientConnectionException: org.apache.thrift.transport.TTransportException: Frame size (16858796) larger than max length (16384000)! 
at org.apache.cassandra.cql.jdbc.CassandraStatement.doExecute(CassandraStatement.java:197) 
at org.apache.cassandra.cql.jdbc.CassandraStatement.executeQuery(CassandraStatement.java:229) 
at ir.categorization.methods.featureselection.DBFeatureSelection.getFeatures(DBFeatureSelection.java:102) 
at ir.categorization.methods.test.Classifier.setFeatures(Classifier.java:67) 
at ir.categorization.methods.test.Classifier.<init>(Classifier.java:50) 
at ir.categorization.methods.test.ClassifierTest.main(ClassifierTest.java:105) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
Caused by: org.apache.thrift.transport.TTransportException: Frame size (16858796) larger than max length (16384000)! 
at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:137) 
at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101) 
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) 
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:362) 
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:284) 
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:191) 
at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69) 
at org.apache.cassandra.thrift.Cassandra$Client.recv_execute_cql3_query(Cassandra.java:1562) 
at org.apache.cassandra.thrift.Cassandra$Client.execute_cql3_query(Cassandra.java:1547) 
at org.apache.cassandra.cql.jdbc.CassandraConnection.execute(CassandraConnection.java:468) 
at org.apache.cassandra.cql.jdbc.CassandraConnection.execute(CassandraConnection.java:494) 
at org.apache.cassandra.cql.jdbc.CassandraStatement.doExecute(CassandraStatement.java:164) 
... 10 more 
Exception in thread "main" java.lang.NullPointerException 
at java.util.TimSort.sort(TimSort.java:173) 
at java.util.Arrays.sort(Arrays.java:659) 
at ir.categorization.methods.test.Classifier.setFeatures(Classifier.java:68) 
at ir.categorization.methods.test.Classifier.<init>(Classifier.java:50) 
at ir.categorization.methods.test.ClassifierTest.main(ClassifierTest.java:105) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 

ich schon cassandra 1.2.8 in Eclipse mit Java verwendet wurde 6, und alles war in Ordnung!

P.S: Ich habe native_transport_max_frame_size_in_mb in cassandra.yaml von 256 bis 512 und thrift_framed_transport_size_in_mb von 15 bis 32, aber es nicht behoben.

Kann jeder Körper helfen?

+0

hast du einen Blick auf http://stackoverflow.com/questions/19381778/thrift-max-message-length-in-mb-not-recognized-cassandra – secmask

+0

danke. =, Ich habe das nicht gesehen! aber ich möchte wissen, warum es mit cassandra 1.2.8 gearbeitet hat und ich hatte kein Problem! – zsh

+0

Ich habe noch nicht Cassandra verwendet, aber ich denke, sie haben unterschiedliche Standardwerte (falls Sie nicht beide Enden eingestellt haben), haben Sie eine Google mit diesem Fehler viele Ergebnisse :). – secmask

Antwort

-1

ändern Eigenschaft start_native_transport in cassandra.yaml zu

start_native_transport: true 

dann versuchen, und stellen Sie sicher, dass Sie für den Betrieb richtigen Anschluss verwenden.

Welche API verwenden Sie, um mit Cassandra zu interagieren?

+1

Nativer Transport hat nichts mit Thrift zu tun. –

+0

Ich denke, er verwendet JDBC-Treiber für Cassandra/CQL !!! – kkmishra

+0

Er tut es, aber dieser Fahrer benutzt Thrift als Transport darunter. –

Verwandte Themen