2012-06-25 12 views
5

tengo una familia de columnas AllLog cree queInsertar familia de columnas Cassandra con composite clave

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

pero cuando se utiliza mutador para insertar:

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

siempre a través de excepción:

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

Por favor, alguien me ayude, ¿dónde está mi error en este código?

Respuesta

2

El esquema especifica el comparador como un tipo compuesto, pero la inserción crea una columna con una sola cadena ("nombre").

+0

sí, lo sé, pero me pregunto: ¿tengo alguna solución que pueda crear una tabla con una clave compuesta y otra columna es de tipo UTF8? Lo intento en cql3 es okie pero en hector, no puedo insertar datos en dicha tabla :(:( –

+0

No estoy seguro de lo que está preguntando aquí ... con el esquema especificado, debe actualizar el código para que createColumn use una Nombre compuesto, más revise el esquema para hacer que el comparador utf8. – libjack

Cuestiones relacionadas