我有以下代码:-
val imei = "86656"
val date = "2017-04-09"
val gpsdt = "2017-04-09 00:20:10"
val rdd = sc.cassandraTable("test", "xyz").select("id", "date", "dttime").where("id=? and date=?", imei, date)
所以,现在我有rdd,它带来了特定日期的特定imei的整个数据,但我想过滤行,以获得2行的基础上提到的“gpsdt”- 1行只是大于给定的时间和第二行只是小于提到的行?我如何才能实现这一点?
我的Cassandra数据库架构是:-
create table xyz( id text,date text, dttime timestamp,roll text, primary key((id,date),dttime)
谢谢你,
1条答案
按热度按时间gmxoilav1#
您可以将RDD分成两个:
*1以
dttime
大于gpsdt
,按dttime
升序排序,take
取第一个 *。*2其中
dttime
小于gpsdt
,按dttime
降序排序,take
取第一个 *。最后,
union
它们,您应该会得到所需的行以编程方式
感谢@Alex Ott指出https://github.com/datastax/spark-cassandra-connector/blob/master/doc/2_loading.md