2011-10-20 13 views
5

A ciegas después de http://wiki.apache.org/cassandra/CassandraCli, ¿alguien puede explicar esto?¿Por qué cortar y pegar desde el tutorial de Cassandra CLI no funciona?

aaron-mac:apache-cassandra-1.0.0 aaron$ bin/cassandra-cli -host localhost -port 9160 
Connected to: "Test Cluster" on localhost/9160 
Welcome to the Cassandra CLI. 

Type 'help;' or '?' for help. 
Type 'quit;' or 'exit;' to quit. 

[[email protected]] use Keyspace1; 
Authenticated to keyspace: Keyspace1 

[[email protected]] create column family User with comparator = UTF8Type; 
5ef4bad0-fb2a-11e0-0000-242d50cf1ffd 
Waiting for schema agreement... 
... schemas agree across the cluster 
[[email protected]] set User['jsmith']['first'] = 'John'; 
org.apache.cassandra.db.marshal.MarshalException: cannot parse 'jsmith' as hex bytes 
[[email protected]] 

Respuesta

4

Eso es para una versión anterior de Cassandra. Las claves son ahora tratados como hex bytes por defecto, por lo que necesita:

set User[utf8('jsmith')]['first'] = 'John'; 

o hacen:

assume User keys as utf8; 
set User['jsmith']['first'] = 'John'; 

O, como la nota en el doc dice:

Nota: A partir de Cassandra 0.8, tenemos que declarar un key_validation_class para la familia de la columna:

update column family User with key_validation_class=UTF8Type; 
+0

Hmmm. Pensé que había obtenido Cassandra 1.0 esta mañana. Voy a ver. –

+0

El tarball desempaquetó en aaron-mac: apache-cassandra-1.0.0, fwiw. –

+0

He actualizado la página wiki para enfatizar esto más, usando los ejemplos de la respuesta de Theodore (¡gracias!). – DNA

21

Antes de ejecutar cualquier comando set en Cassandra C LI, siempre es aconsejable hacer lo siguiente:

assume <column_family> keys as utf8; 
assume <column_family> comparator as utf8; 
assume <column_family> validator as utf8; 

Esto asegurará que todo lo que configura y la lista se entenderá

PD: Esto es sólo para los recién llegados a Cassandra

+0

Versión de Cassandra> = 2.0 – CodeGroover

1
set User['jsmith'][utf8('first')] = utf8('John'); 

Si no está seguro acerca del comando set, puede escribir help set; y le mostrará la documentación completa.

+0

Utilizando la validación con utf8 ('myvalue') realmente funcionó. – Adelin

Cuestiones relacionadas