попробовать что-то вроде этого:
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();
}
}
Это будет листать семейства столбцов в страницах 100 строк. Он будет отображать только 10 столбцов для каждой строки (вам также понадобится страница с очень длинными строками).
Это для семейства столбцов с uuids для ключей строк, строк для имен столбцов и длинны для значений. Надеюсь, должно быть очевидно, как это изменить.
Спасибо за ваш ответ. Но это то, что я сделал. Я просто устанавливаю rangeSlicesQuery.setKeys ("", ""), и я не устанавливаю количество строк. Это вернуло все строки в семействе столбцов. Кажется, нет необходимости переходить по столбцам. –
Чтобы продолжить мой предыдущий комментарий, для этого мне нужно было указать имена столбцов. –
Я довольно уверен, что Гектор не реализует подкачку для вас. Вероятно, ваш код будет терпеть неудачу с тайм-аутом (или, что еще хуже, причиной Cassandra для OOM), когда ваш набор данных станет больше, поскольку выполнение того, что вы предлагаете, заставляет Cassandra загружать весь набор данных в оперативную память. –