【发布时间】:2020-12-16 07:10:16
【问题描述】:
我试图从 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
【问题讨论】:
-
您是否尝试在查询中指定大于 5000 的
LIMIT?例如select * from table LIMIT 50000 ALLOW FILTERING。 ref cql 3.x doc .. 注意:使用 PER PARTITION LIMIT 部分控制返回的行数 -
关于“也在尝试 [paging] 但这也不起作用,因为我没有使用任何过滤器”.. 我不明白您关于不使用任何过滤器的评论;您的查询指定了 ALLOW FILTERS,如果您表达它,则 LINQ 表达式本身应该使用过滤器构建\生成查询命令。但这可能无关紧要......我的第一个问题是,你的表中的数据是否有一个名为 state 的列有'xyz'?第二,你有没有像 sn-p 说的那样尝试
.SetAutoPage(false)?此外,为避免不必要地查询列,请尝试... table 1 = ?和ps.Bind(1) -
@BrettCaswell 当我设置
statement.SetAutoPage(false);statement.SetPageSize(1000);时分页不起作用我没有得到超过1000 的数据。我试图查看Console.WriteLine(rs.IsExhausted());Console.WriteLine(rs.IsFullyFetched);Console.WriteLine(rs.PagingState);的值,这表明没有剩余数据了. -
我问了三个问题 - 你真的只回答了一个......你回答它的方式引起了人们的关注。我不知道这个问题与您的问题有多相关,但
statement.SetAutoPage(false);statement.SetPageSize(1000);应该表示为var newStatement = statement.SetAutoPage(false).SetPageSize(1000);。这些方法不应被视为变异statement,或IStatement的实例;它应该被认为是创建 \ 返回一个新的 IStatement 实例。 -
@brett 相同的代码首先开始工作。我不确定如何。在这之间,我在查询中将一致性级别更改为 ALL。并运行它几次失败。我还更改了一些查询设置。当我检查信件时,它开始正常工作。
标签: c# cassandra-3.0