使用distinct时,获取每个RDD的顶部条目

时间:2015-08-18 01:54:37

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

我有一些随时间变化的数据,我将它保存在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

2 个答案:

答案 0 :(得分:2)

这应该有效:

rdd.toDF.groupBy("Userid").max("Date")

答案 1 :(得分:-1)

你可以先做一件事,然后使用spark连接cassandra,然后制作spark数据帧,然后将数据帧转换为temptable,然后就可以执行查询了。