2014-04-14 18 views
8

Ho un progetto Java in Intelly con Cassandra DB e sto usando Maven 3 e Java 7. La versione di Cassandra è 2.0.6. Ho una tabella con quasi 100.000 righe. Quando eseguo il programma ottengo questa eccezione:java.sql.SQLNonTransientConnectionException: org.apache.thrift.transport.TTransportException: dimensione del frame superiore alla lunghezza massima (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) 

ero già usando cassandra 1.2.8 in Eclipse con Java 6, e ogni cosa era ok!

P.S: ho impostato native_transport_max_frame_size_in_mb in cassandra.yaml da 256 a 512 e thrift_framed_transport_size_in_mb da 15 a 32, ma non risolve il problema.

Può qualche aiuto del corpo?

+0

hai dato un'occhiata a http://stackoverflow.com/questions/19381778/thrift-max-message-length-in-mb-not-recognized-cassandra – secmask

+0

grazie. =, Non l'ho visto! ma voglio sapere perché è stato il lavoro con cassandra 1.2.8 e non ho avuto alcun problema! – zsh

+0

Non ho ancora usato la cassandra, ma suppongo che abbiano un valore predefinito diverso (nel caso in cui non l'aveste impostato entrambi), fare un google con questo errore ha molti risultati :). – secmask

risposta

-1

Modifica proprietà start_native_transport in cassandra.yaml per

start_native_transport: true 

quindi provare e assicurarsi che si sta utilizzando la porta giusta per il funzionamento.

Quale API si sta utilizzando per interagire con Cassandra?

+1

Il trasporto nativo non ha nulla a che vedere con Thrift. –

+0

Penso che stia usando il driver JDBC per Cassandra/CQL !!! – kkmishra

+0

Lo fa, ma quell'autista usa il Thrift come trasporto al di sotto. –

1

Utilizzare la versione 0.9.0 di Thrift.

Problemi correlati