Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/09/2013, 14:00
Link_OOT
 
Fecha de Ingreso: noviembre-2008
Mensajes: 47
Antigüedad: 15 años, 5 meses
Puntos: 0
Aprendiendo Cassandra

Hola,

he "descubierto" este nuevo tipo de bases de datos, he leído un poco la documentación y ahora estoy haciendo algunas pruebas... para cogerle soltura y eso... Buscando API's que me permitan trabajar en java, he encontrado una llamada "hector-core" y la estoy probando, comencé por la versión 0.7.0-29 pero esa versión no me permitía (o no supe como hacerlo) hacer búsquedas por un campo que no fuera clave, asi que actualice a la 1.1.4 que esa si me permite hacer las búsquedas que necesito. El problema es que ahora no consigo crear una columna para insertar un dato en el columnFamily. El codigo que tengo es este:

Código:
Cluster cluster = HFactory.getOrCreateCluster("Test Cluster", "localhost:9160");
            Keyspace keyspace = HFactory.createKeyspace("AuthDB", cluster);
            Mutator<String> mutator = HFactory.createMutator(keyspace, stringSerializer);
            ColumnQuery<String, String, String> columnQuery =HFactory.createStringColumnQuery(keyspace);
            mutator.insert("sample", "authCollection", HFactory.createStringColumn("username", "admin"));
            mutator.insert("sample", "authCollection", HFactory.createStringColumn("password", "admin"));
Y el codigo que uso para buscar es:

Código:
            Keyspace keyspace = HFactory.createKeyspace("AuthDB", cluster);
            ThriftRangeSlicesQuery <String, String, String> sliceQuery = (ThriftRangeSlicesQuery<String, String, String>) HFactory.createRangeSlicesQuery(keyspace, stringSerializer, stringSerializer, stringSerializer);
            sliceQuery.setColumnFamily("authCollection");
            sliceQuery.addEqualsExpression("username", "admin");
            sliceQuery.setRange("", "", false, 4);
            QueryResult<OrderedRows<String, String, String>> result = sliceQuery.execute();
El problema del cambio es que el objeto de tipo ThriftRangeSlicesQuery no tiene el método addEqualsExpression, por lo que tuve que actualizar a una versión en la que ese método estuviera implementado.

El error que da es:

Código:
23-sep-2013 21:59:49 me.prettyprint.cassandra.connection.CassandraHostRetryService <init>
INFO: Downed Host Retry service started with queue size -1 and retry delay 10s
23-sep-2013 21:59:49 me.prettyprint.cassandra.service.JmxMonitor registerMonitor
INFO: Registering JMX me.prettyprint.cassandra.service_Test Cluster:ServiceType=hector,MonitorType=hector
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.thrift.meta_data.FieldValueMetaData.<init>(BZ)V
	at org.apache.cassandra.thrift.Column.<clinit>(Column.java:140)
	at me.prettyprint.cassandra.model.HColumnImpl.<init>(HColumnImpl.java:62)
	at me.prettyprint.cassandra.model.HColumnImpl.<init>(HColumnImpl.java:35)
	at me.prettyprint.hector.api.factory.HFactory.createColumn(HFactory.java:612)
	at me.prettyprint.hector.api.factory.HFactory.createStringColumn(HFactory.java:633)
	at com.examples.cassandra.CassandraExample.insertData(CassandraExample.java:58)
	at com.examples.cassandra.CassandraExample.main(CassandraExample.java:161)
Como lo soluciono?

Gracias!