我有一张cassandra表如下:
CREATE TABLE IF NOT EXISTS CategoryDetails (
name text,
id text,
ts timestamp,
price double,
category text,
PRIMARY KEY ((name, id), ts, price, category))
WITH CLUSTERING ORDER BY (ts DESC, price DESC);
我希望能够使用spark-cassandra连接器查询此表,这样我就可以获得每天最新时间戳的行(名称,ID,类别)作为键。例如,对于下表
Name id price category ts
------------------------------------------------------------------
("kids", "1234", "3.99", "Toys", "2017-07-11 09:00:52"),
("kids", "1234", "3.99", "Toys", "2017-07-11 08:00:52"),
("kids", "1234", "4.99", "Toys", "2017-07-11 07:00:52"),
("kids", "1234", "5.99", "Toys", "2017-07-12 12:00:52")
期望的结果是每天(姓名,身份证,类别)的最新记录
Name id price category ts
------------------------------------------------------------------
("kids", "1234", "3.99", "Toys", "2017-07-11 09:00:52"),
("kids", "1234", "5.99", "Toys", "2017-07-12 12:00:52")
到目前为止,我有一个查询,我正在做一些地图(以便从时间戳中获取日期作为其中一个键)和reduceByKey(通过仅选择每天最新的ts),这会导致数据混乱并没有保留Cassandra分区。 (如有必要,我可以更新代码。)
我的问题是,有没有办法在查询级别自行获取所需的数据?