Spark Cassandra - 获取每日最新时间戳的行

时间:2017-11-14 03:35:48

标签: scala apache-spark spark-cassandra-connector

我有一张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分区。 (如有必要,我可以更新代码。)

我的问题是,有没有办法在查询级别自行获取所需的数据?

0 个答案:

没有答案