首页 > 解决方案 > 如何在时间戳上对 cassandra 表进行分区?

问题描述

我有这样的桌子

CREATE TABLE ks.log_by_date (
        column_name text,
    status text,
    error_msg text,
    last_update_date date,
    last_update_timestamp timestamp,
    updated_user text,
    PRIMARY KEY (( column_name), last_update_date)
) WITH CLUSTERING ORDER BY ( last_update_date DESC );

INSERT INTO ks.log_by_date (column_name,last_update_date,error_msg,last_update_timestamp,status,updated_user) 
  VALUES ('column_log_by_date','2018-10-23','NONE',1540302120001,'ERROR','user1');

INSERT INTO ks.log_by_date (column_name,last_update_date,error_msg,last_update_timestamp,status,updated_user) 
  VALUES ('column_log_by_date','2018-10-23','NONE',1540302340001,'SUCCESS','user1');

当我基于“last_update_timestamp”列插入两列时,具有不同的时间戳 1540302120001 和 1540302340001,该行被覆盖。

我在这里做错了什么?为什么它覆盖行而不是两个单独的行。我怎样才能在此处插入两行...基于 last_update_timestamp

你的帮助是非常有意义的。

标签: apache-sparkdatastaxcassandra-3.0

解决方案


如果您希望将不同last_update_timestamp的 2 行计为单独的行,那么您需要将last_update_timestamp主键放入主键中,作为聚类列:

PRIMARY KEY (( column_name), last_update_date, last_update_timestamp)

但我不知道 - 你真的需要在last_update_date那里吗?您是否需要选择所有具有某些特定的行last_update_date


推荐阅读