【问题标题】:Get a random row in Cassandra using Datastax and CQL使用 Datastax 和 CQL 在 Cassandra 中获取随机行
【发布时间】:2013-11-26 22:27:44
【问题描述】:

我是 NoSQL n00b,只是尝试一下。我在 cassandra 2.0.2 中有以下带有单个表的键空间

CREATE KEYSPACE PersonDB WITH replication = {
'class': 'SimpleStrategy',
'replication_factor': '1'
 };

USE PersonDB;

CREATE TABLE Persons (
 id int,
 lastname text,
 firstname text,
 PRIMARY KEY (id)
)

我在 Persons 表中有近 500 个条目。我想从表中选择任何随机行。在 CQL 中有没有一种有效的方法来做到这一点?我正在使用 groovy 调用 datastax 公开的 API。

【问题讨论】:

    标签: groovy cassandra cql datastax-java-driver


    【解决方案1】:

    如果想获得“任何”行,您可以使用LIMIT

    select * from persons LIMIT 1;

    您将获得分区键 (id) 的哈希值较低的行。

    它不会是随机的,它取决于你的分区器,但你会得到 A 行。

    【讨论】:

    • 你知道我应该使用什么分区器来使它更接近随机吗?是否必须在创建键空间时指定分区器?每当我使用查询“select * from people LIMIT 1;”时,我应该得到不同的行吗
    • 使用 RandomPartitioner(默认)你会得到 A 行,但如果数据没有变化,它会不会一样。如果您真的想每次都获得一个随机行,则必须创建一些自定义解决方案(即:具有相同分区键的另一个列族并使用 person_id 作为聚类列)
    猜你喜欢
    • 1970-01-01
    • 2012-03-22
    • 2016-11-14
    • 2018-09-26
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    相关资源
    最近更新 更多