【发布时间】:2018-03-15 22:43:20
【问题描述】:
我编写了以下程序来查询 cassandra 中名为 Foo 的表中的行。该表有 431 行。
val session = getDevTestSession()
val stmt = session.prepare("select * from foo where token(id) > ? and token(id) <= ?")
val ps = stmt.bind(new Long(Long.MIN_VALUE), new Long(Long.MAX_VALUE))
.setFetchSize(1000)
.setConsistencyLevel(ConsistencyLevel.ONE)
val resultSet = session.execute(ps)
val iterator = resultSet.iterator()
var rowCount = 0
var expireCount = 0
while(!resultSet.isFullyFetched) {
resultSet.fetchMoreResults()
val row = iterator.next()
if (row != null) {
rowCount += 1
}
}
println(s"total number of rows ${rowCount}")
session.close()
此程序返回 0 行。
我改变了程序并设置了
.setFetchSize(1)
现在程序返回了所有 431 行。
我把程序改成
.setFetchSize(100)
现在程序只返回了 400 行。
我想要的是,如果提取大小为 100,但剩余行数仅为 31,那么程序应该返回 31 行而不返回空结果。似乎如果行数小于 fetchSize 则它返回为空而不是返回可用的任何内容。
我的 cassandra 司机是
"com.datastax.cassandra" % "cassandra-driver-core" % "3.1.4"
【问题讨论】:
-
显示的代码没有使用 JDBC