Cassandra查询多行的最新数据

2024-10-01 13:43:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我是卡桑德拉菜鸟。我每5分钟收集一次系统状态,所以我创建了这个表

create table sysportal (hostname text, logged_date text, logged_time timestamp, service text,  plugin_output text, status text, PRIMARY KEY((hostname, logged_date), logged_time, service, plugin_output, status));

样本表是

^{pr2}$

如何在单个查询中获取所有主机的最新数据?在

目前我正在使用python

select logged_date, logged_time from sysportal limit 1; => In python save in variables
select hostname from sysportal;  => In python get distinct hosts

然后

for i in hosts:
    select service from sysportal where hostname=i and logged_date=va1  and logged_time=var2

有人能建议我是否可以用cassandra中的单个查询来完成这个任务? 是否应该创建其他表/列\u族?在


Tags: textinfromoutputdatetimestatusservice
1条回答
网友
1楼 · 发布于 2024-10-01 13:43:42

不幸的是,由于主机名是分区键的一部分,因此不能。根据数据大小/负载情况,您可以创建一个新表,该表将“logged date”或其他列作为分区键,并将hostname作为集群列的一部分。在

所以你的桌子看起来像这样:

create table sysportal_by_date (
  hostname text,
  logged_date text,
  logged_time timestamp,
  service text,
  plugin_output text,
  status text,
  PRIMARY KEY(
    logged_date,
    logged_time,
    hostname,
    service,
    plugin_output,
    status
  )
) with clustering order by (logged_time DESC);

这将允许您运行以下查询:

^{pr2}$

相关问题 更多 >