我有一些随时间变化的数据,我把它保存在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时,我想要建筑物1作为位置,建筑物10为用户2。
Spark版本1.2.2
应该可以:
rdd.toDF.groupBy("Userid").max("Date")
你可以做一件事,首先使用spark与cassandra连接,然后创建spark的dataframe,然后将dataframe转换为temptable,然后你可以执行你的查询。