我有一些随时间变化的数据,我将它保存在cassandra中。 UserId是分区键,标记日期是按顺序降序的聚类键和数据。我的期望是,如果我从Spark查询并在其上运行.distinct,我将获得每个UserId的最高条目,从而为我提供最新数据。但看起来它并没有这样做。
除了减少数据和传递一个为每次比较选择最近日期数据的函数之外,有没有办法获得与最新日期相对应的数据。
[编辑]
Sample:
Userid: 1
Date: 8/15/2015
Location: Building 1
...
Date 8/1/2015
Location: Building 5
...
Userid: 2
Date: 7/30/2015
Location: Building 10
...
Date: 6/1/2015
Location: Building 3
...
根据我的要求,对于用户1,我想将Building 1作为位置,并为用户2构建10。
Spark版本1.2.2
答案 0 :(得分:2)
这应该有效:
rdd.toDF.groupBy("Userid").max("Date")
答案 1 :(得分:-1)
你可以先做一件事,然后使用spark连接cassandra,然后制作spark数据帧,然后将数据帧转换为temptable,然后就可以执行查询了。