2011-06-01 17 views
10

No puedo recuperar datos de Cassandra después de salir de la cli. Cuando vuelva a obtener los datos en otra sesión, me sale este error:No se pueden recuperar datos de Cassandra

org.apache.cassandra.db.marshal.MarshalException: No se puede analizar 'jsmith' como bytes hexagonal

Parece que la familia de columnas se queda y el espacio de claves también.

También cambié el formato de las claves a ascii (supongo que las claves de los usuarios son ascii;) ... Y eso tampoco permanece configurado.

¿Hay alguna razón por la cual? Que esta pasando?

Respuesta

16

Todos los comandos "asumir" son temporales y se limitan a una sola sesión cli. Para los que no se sienta delante de la CLI en este momento, nos estamos refiriendo a las siguientes:

assume <cf> comparator as <type>; 
assume <cf> sub_comparator as <type>; 
assume <cf> validator as <type>; 
assume <cf> keys as <type>; 

Assume one of the attributes (comparator, sub_comparator, validator or keys) 
of the given column family match specified type. The specified type will 
be used when displaying data returned from the column family. 

Estos son puramente lado del cliente.

En su lugar, lo que quiere hacer es registrar esos metadatos permanentemente en la definición de ColumnFamily, p. Ej. Del readme,

create column family Users with comparator=UTF8Type and default_validation_class=UTF8Type and key_validation_class=UTF8Type; 

Esto es diferente de "asume" en 3 formas:

  1. Se registra de forma permanente en Cassandra
  2. Cassandra hará cumplir el tipo especificado en contra de datos insertada
  3. Todo los clientes pueden consultar y usar estos metadatos para hacer cosas inteligentes con él, no solo el cli

Supongamos que existe principalmente como una solución para los viejos conjuntos de datos que no se pueden actualizar para usar un tipo de servidor "real".

+2

¡Gracias por esa respuesta! – strauberry

Cuestiones relacionadas