问题描述
我正在尝试从Cassandra表中获取所有记录,但仅获得5000行。有什么办法可以从表格中获取所有结果?
以下是版本详细信息:
是驱动程序版本3.11.0
我的服务器版本是[cqlsh 5.0.1 |卡桑德拉3.11.4 | CQL规范3.4.4 |原生协议v4]
下面是我的代码
//Create a cluster instance using 3 cassandra nodes.
var cluster = Cluster.Builder()
.AddContactPoints("xx.xx.xx.xx")
.Build();
var session = cluster.Connect("keyspace");
var rs = session.Execute("select * from table ALLOW FILTERING");
ini i=0;
foreach (var row in rs)
{
i++;
}
i
的值始终为5000。我试图实现分页以获取所有数据,但无法做到这一点。
while (!rs.IsFullyFetched)
{
rs.FetchMoreResults();
foreach (var row in rs)
{
i++;
}
}
我仍然得到相同的结果
也尝试遵循URL
https://docs.datastax.com/en/developer/csharp-driver/3.13/features/paging/
但这也不起作用,因为我没有使用任何过滤器。
但是当我尝试引入过滤器时,结果是0行。
var ps = session.Prepare("select * from table where state = ? ALLOW FILTERING");
//// Set the page size at statement level.
var statement = ps.Bind("xyz").SetPageSize(1000);
var rs = session.Execute(statement);
var i = 0;
foreach (var row in rs)
{
i++;
}
有针对特定状态的记录,但未获取任何数据。记录数为零。
之前我也遇到了驱动程序版本问题
Query Cassandra form C# no result is shown
解决方法
默认情况下,fetchsize设置为5000,以防止应用程序在一次响应中意外检索大型结果集,也许您可以使用.setFetchSize(int)属性