如何在时间戳上对Cassandra表进行分区?

时间:2018-10-23 14:20:12

标签: apache-spark datastax cassandra-3.0

我有这样的桌子

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

在此处插入两行

您的帮助非常有用。

1 个答案:

答案 0 :(得分:1)

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

PRIMARY KEY (( column_name), last_update_date, last_update_timestamp)

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