Hãy thử một cái gì đó như thế này:
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();
}
}
trang chí này thông qua việc gia đình cột trong trang của 100 dòng. Nó sẽ chỉ lấy 10 cột cho mỗi hàng (bạn sẽ muốn trang hàng rất dài quá).
Điều này dành cho một họ cột có các uuids cho khóa hàng, chuỗi cho tên cột và thời lượng cho giá trị. Hy vọng rằng nó sẽ được rõ ràng như thế nào để thay đổi điều này.
Nguồn
2011-12-07 16:49:50
Cám ơn câu trả lời của bạn. Nhưng đây là những gì tôi đã làm. Tôi chỉ cần đặt rangeSlicesQuery.setKeys ("", "") và tôi không đặt bất kỳ số hàng nào. Điều này trả về tất cả các hàng trong họ cột. Có vẻ như không cần phải trang qua các cột. –
Để tiếp tục với nhận xét trước đó của tôi, để làm như vậy, tôi cần phải chỉ định tên cột. –
Tôi khá chắc chắn Hector không thực hiện phân trang cho bạn. Mã của bạn sẽ có khả năng thất bại với một thời gian chờ (hoặc tệ hơn, gây ra Cassandra để OOM) khi bạn tập dữ liệu được lớn hơn, như làm những gì bạn đề nghị nguyên nhân Cassandra tải toàn bộ số liệu vào RAM. –