2012-06-25 9 views
5

habe ich eine Spalte Familie AllLog schaffen, dassInsert cassandra Spalte Familie mit zusammengesetzten Schlüssel

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)'; 

aber wenn ich Mutator einzufügen:

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(); 

immer durch Ausnahme:

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

Bitte helfen Sie mir, wo ist mein Fehler in diesem Code?

Antwort

2

Das Schema gibt den Vergleicher als Composite-Typ an. Die Einfügung erstellt jedoch eine Spalte mit einer einzelnen Zeichenfolge ("Name").

+0

ja ich weiß es, aber ich frage mich, dass: eine Lösung haben, dass ich eine Tabelle mit einem zusammengesetzten Schlüssel erstellen kann und andere Spalte verwenden UTF8 Typ ???? Ich versuche es in cql3 ist okie, aber in hector, kann ich keine Daten in solche Tabelle einfügen :(:( –

+0

Nicht sicher, was Sie hier fragen ... mit dem angegebenen Schema, sollten Sie den Code aktualisieren, so createColumn verwendet ein Zusammengesetzter Name, sonst überarbeiten Sie das Schema, um den Vergleicher utf8 zu machen. – libjack