如何在不知道我要找到什么的情况下查询Cassandra?

时间:2018-06-14 19:10:13

标签: cassandra

只要输入该标题​​,我就会想知道我是否在某个维度中,我所知道的数据库都是错误的。

我有[几个表,但这是一个例子]:

CREATE TABLE stream (
  source_id uuid,
  yyyymmdd int,
  event_type text,
  time timestamp,
  data text,
  PRIMARY KEY ((source_id, yyyymmdd, event_type), time)
)

我知道yyyymmdd中可能包含的内容,但对于其他分区键,我没有。在不知道source_id和event_type的可能值是什么的情况下,我无法查询它。我最终想知道的是:

db中最早的yyyymmdd和最新的yyyymmdd是什么?

这几乎就像我需要一个数据库中的数据库。

1 个答案:

答案 0 :(得分:1)

在cqlsh中,转到您的密钥空间(use <keyspace_name>)并运行

copy stream(yyyymmdd) to 'stream-yyyymmdd.csv' with NUMPROCESSES = 1 and MAXREQUESTS = 1;

如果您不想运行use <keyspace_name>,或者使用keyspace_name(&lt; keyspace_name&gt; .stream)在复制命令中为表名添加前缀。

对于NUMPROCESSES和MAXREQUESTS,您可以使用适合您的值。请参阅COPY documentatation here。 NUMPROCESSES是工作进程的数量。最大值为16.默认值:-1。 MAXREQUESTS是每个工作者可以并行处理的最大请求数。默认值:6。

然后进行排序并提取第一行和最后一行

sort -n -o stream-yyyymmdd-sorted.csv stream-yyyymmdd.csv
head -1 stream-yyyymmdd-sorted.csv
tail -1 stream-yyyymmdd-sorted.csv

HTH