cassandra - Astyanax 键范围查询

标签 cassandra range astyanax

尝试编写一个查询,该查询将使用 astyanax 客户端和 RowSliceQuery 对列族中的所有行进行分页。

keyspace.prepareQuery(COLUMN_FAMILY).getKeyRange(null, null, null, null, 100);

使用 hector 成功完成此操作,其中第一次调用是使用 null 开始和结束键完成的。检索第一页后,我使用结果中的最后一个键查询第二页等。这是使用 hector 的第一页代码。

HFactory.createRangeSlicesQuery(keyspace,
LongSerializer.get(), new CompositeSerializer(),
BytesArraySerializer.get())
.setColumnFamily(COLUMN_FAMILY)
.setRange(null, null, false, 100).setRowCount(100);

现在,当我尝试使用 astyanax 执行此操作时,我收到有关 null 和非 null 键和 token 的错误。不确定标记在此查询中的作用。我也可以使用 allRows(),但我想使用键范围查询来执行此操作,因为它为我提供了更大的灵 active 。

有人有使用 astyanax 的键范围查询示例吗?我在“入门”文档或网络上的其他任何地方都找不到示例。

谢谢! 安东

最佳答案

你指的是 getRowRange 方法:

keyspace.prepareQuery(CF_STANDARD1)
  .getRowRange(startKey, endKey, startToken, endToken, count)

但是请注意,这仅在 ByteOrderedPartitioner 时有效用来。由于默认情况下 Cassandra 使用 Murmur3Partitioner,这通常不起作用。建议改用索引来执行此操作。 Astyanax 还提供了 reverse index search recipe 利用第二个列族将您的键存储为列,以允许对原始数据进行有效的范围搜索。

关于cassandra - Astyanax 键范围查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12762818/

相关文章:

cassandra 1.1.x 通过组合键获取

cassandra - org.apache.thrift.transport.TTransportException : Cannot read. 远程端已关闭

mongodb - 在cassandra中处理多表事务

cassandra - Kubernetes 中托管的 Cassandra 的本地持久卷

database - 具有相同节点的 Cassandra 多个数据中心

c# - 动态内容提供端点作为音频源,跳过不起作用或下载不起作用

go - 如何在 Scylla 和 Go 中查询带有偏移量的限制

vba - 从范围 VBA 中查找最后一个单元格

math - 单位范围 [0->1] 的清晰/标准名称

java - Cassandra 更新不一致