Cassandra - 遍历 table 行
Cassandra - Iterate through table rows
我的目标是遍历我的 cassandra 数据库,其中的每个条目,并检查某个字段以查看是否需要执行操作。我正在使用在这里找到的 erlang cql 驱动程序:https://github.com/matehat/cqerl
当我在 2000 年的 table 中 运行 select * from keyspace.table limit 10;
时,我得到了前 10 个结果...但是我需要得到下一个 1990。我如何得到接下来的 10 个使用 CQL?我看到支持分页,但没有关于如何在 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 行插入 table,然后我 运行 下面的函数。它迭代了所有 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 数据库,其中的每个条目,并检查某个字段以查看是否需要执行操作。我正在使用在这里找到的 erlang cql 驱动程序:https://github.com/matehat/cqerl
当我在 2000 年的 table 中 运行 select * from keyspace.table limit 10;
时,我得到了前 10 个结果...但是我需要得到下一个 1990。我如何得到接下来的 10 个使用 CQL?我看到支持分页,但没有关于如何在 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 行插入 table,然后我 运行 下面的函数。它迭代了所有 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.