Cassandra - 遍历表行

标签 cassandra pagination erlang cql

我的目标是浏览我的 cassandra 数据库,其中的每个条目,并检查某个字段以查看是否需要执行操作。我正在使用此处找到的 erlang cql 驱动程序:https://github.com/matehat/cqerl

当我跑 select * from keyspace.table limit 10;在 2000 年的表中,我得到了前 10 个结果……但是我需要得到下一个 1990 年。我如何使用 CQL 得到接下来的 10 个结果?我看到有对分页的支持,但没有关于如何在 cql 中做到这一点的文档。

我已经对这个问题进行了广泛的研究,似乎该主题的唯一答案是不完整的,而且这些问题的许多评论者都没有得到他们想要的答案:Iterating through Cassandra wide row with CQL3

提前谢谢你的帮助!

最佳答案

感谢@Atomic_alarm,我找到了答案。

这里的文档:https://www.datastax.com/dev/blog/client-side-improvements-in-cassandra-2-0指定如何使用 CQL 进行自动分页。

我没有像文档所说的那样使用 cql 命令行,而是使用了 erlang 驱动程序代码。首先,我将 1000 行插入到一个表中,然后我运行了下面的函数。它遍历所有 1000 个结果,一次 2 页:

test_page() ->
       {ok, Client} = cqerl:get_client({}),
       {ok, Res} = cqerl:run_query(Client, #cql_query{statement = "SELECT * FROM dks.devices;",
                       page_size = 2}),
       get_more(Res, 0).
   get_more(Res, Num) ->
       case cqerl:has_more_pages(Res) of
           true ->
               {ok, Res2} = cqerl:fetch_more(Res),
               get_more(Res2, Num+1);
           false -> 
               Num
       end.

关于Cassandra - 遍历表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46574445/

相关文章:

ios - 无限滚动和重复数据

ruby - 我如何使用 Sequel::Model 对两个表进行分页?

ruby-on-rails - Rails 排序或排序查询很慢

emacs - 如何从 Erlang 脚本调用 Emacs?

erlang - 为什么 Erlang/Elixir 观察者内存使用数字不相加?

使用 CQL3 的 Hadoop 多输出

运行 nodetool cleanup 时出现 java.lang.ClassCastException 和 java.lang.AssertionError

database - Golang(带 gocql 驱动程序)不返回 Cassandra DB 中的所有条目

python - 导入 csv 时 Cassandra 错误 'NoneType' 对象没有属性 'datacenter'

erlang - 可能/实用的 Erlang 节点数量?