2012-06-25 11 views
5

Ho una famiglia di colonna AllLog creare cheInserire famiglia colonna cassandra con composito chiave

create column family LogData 
    with column_type = 'Standard' 
    and comparator = 'CompositeType(org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)' 
    and default_validation_class = 'UTF8Type' 
    and key_validation_class = 'CompositeType(UTF8Type,UTF8Type)'; 

ma quando uso mutator inserire:

String key0 = "key0"; 
    String key1 = "key1"; 

    Composite compositeKey = new Composite(); 
    compositeKey.addComponent(key0, StringSerializer.get()); 
    compositeKey.addComponent(key1, StringSerializer.get()); 

    // add 
    mutator.addInsertion(compositeKey, columnFamilyName, HFactory.createColumn("name", "value")); 
    mutator.execute(); 

sempre attraverso eccezione:

me.prettyprint.hector.api.exceptions.HInvalidRequestException: 
InvalidRequestException(why:Not enough bytes to read value of component 0) 

Per favore qualcuno mi aiuti, dov'è il mio errore in questo codice?

risposta

2

Lo schema specifica il comparatore come un tipo di Composito, tuttavia l'inserimento crea una colonna con una singola stringa ("nome").

+0

sì lo so, ma mi chiedo che: ho qualche soluzione che posso creare una tabella con una chiave composita e la colonna di altri è utilizzare il tipo UTF8 ???? lo provo in cql3 è okie ma in hector, non posso inserire dati in tale tabella :(:( –

+0

Non sono sicuro di cosa stai chiedendo qui ... con lo schema specificato, dovresti aggiornare il codice in modo che createColumn usi un Nome composto, altrimenti rivedere lo schema per rendere il comparatore utf8. – libjack