intentar algo como esto:
public class Dumper {
private final Cluster cluster;
private final Keyspace keyspace;
public Dumper() {
this.cluster = HFactory.getOrCreateCluster("Name", "hostname");
this.keyspace = HFactory.createKeyspace("Keyspace", cluster, new QuorumAllConsistencyLevelPolicy());
}
public void run() {
int row_count = 100;
RangeSlicesQuery<UUID, String, Long> rangeSlicesQuery = HFactory
.createRangeSlicesQuery(keyspace, UUIDSerializer.get(), StringSerializer.get(), LongSerializer.get())
.setColumnFamily("Column Family")
.setRange(null, null, false, 10)
.setRowCount(row_count);
UUID last_key = null;
while (true) {
rangeSlicesQuery.setKeys(last_key, null);
System.out.println(" > " + last_key);
QueryResult<OrderedRows<UUID, String, Long>> result = rangeSlicesQuery.execute();
OrderedRows<UUID, String, Long> rows = result.get();
Iterator<Row<UUID, String, Long>> rowsIterator = rows.iterator();
// we'll skip this first one, since it is the same as the last one from previous time we executed
if (last_key != null && rowsIterator != null) rowsIterator.next();
while (rowsIterator.hasNext()) {
Row<UUID, String, Long> row = rowsIterator.next();
last_key = row.getKey();
if (row.getColumnSlice().getColumns().isEmpty()) {
continue;
}
System.out.println(row);
}
if (rows.getCount() < row_count)
break;
}
}
public static void main(String[] args) {
new Dumper().run();
}
}
Esta página voluntad a través de la familia de columnas en las páginas de 100 filas. Solo obtendrá 10 columnas por cada fila (también querrá ubicar filas muy largas).
Esto es para una familia de columnas con uuids para claves de fila, cadenas para nombres de columna y anhela valores. Con suerte, debería ser obvio cómo cambiar esto.
Gracias por su respuesta. Pero esto es lo que hice. Simplemente configuro rangeSlicesQuery.setKeys ("", "") y no configuro ningún recuento de filas. Esto devolvió todas las filas en la familia de columnas. Parece que no hay necesidad de recorrer las columnas. –
Para continuar con mi comentario anterior, para hacerlo así, necesitaba especificar los nombres de las columnas. –
Estoy bastante seguro de que Hector no implementa mensajes para usted. Es probable que su código falle con un tiempo de espera (o peor, cause que Cassandra cambie a OOM) cuando el conjunto de datos se agranda, ya que hacer lo que sugiere hace que Cassandra cargue todo el conjunto de datos en la RAM. –