【发布时间】:2015-03-12 21:12:51
【问题描述】:
我有带有时间戳列的宽行。如果我使用 DataStax Java 驱动程序,我可以使用 LIMIT 或 FETCH_SIZE 对行结果进行分页,但是,我找不到任何关于如何对特定行的列进行分页的细节。
我发现了这个帖子:http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/CQL-3-and-wide-rows-td7594577.html 这解释了如何根据列名(时间戳)值获取列范围。
但是,我需要做的是获取所有列,我只是不想将它们全部加载到内存中,而是“流式传输”结果并处理一大块列(最好是可控大小)直到该行的所有列都被处理的时间。 DataStax 驱动程序是否支持这种流式传输?等等 - 使用它的语法是什么?
补充说明: 本质上,我正在寻找的是相当于 Hector 的 ColumnSliceIterator 使用它我可以迭代特定行的所有列(最多 Integer.MAX_VALUE 数),例如一次 100 列,如下所示:
SliceQuery sliceQuery = HFactory.createSliceQuery(keySpace, ...);
sliceQuery.setColumnFamily(MY_COLUMN_FAMILY);
sliceQuery.setKey(myRowKey);
// columns to be returned. The null value indicates all columns
sliceQuery.setRange(
null // start column
, null // end column
, false // reversed order
, Integer.MAX_VALUE // number of columns to return
);
ColumnSliceIterator iter = new ColumnSliceIterator(
sliceQuery // previously created slice query needs to be passed as parameter
, null // starting column name
, null // ending column name
, false // reverse
, 100 // column count <-- the batch size
);
while (iter.hasNext()) {
String myColumnValue = iter.next().getValue();
}
如何使用 DataStax 驱动程序做同样的事情?
谢谢!
码头
【问题讨论】: