根据时间戳过滤rdd

filter rdd based on timestamp

我有以下代码:-

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 的全部数据,但我想根据提到的 "gpsdt" 过滤行以获得 2 行 - 1 行刚好大于给定时间和第二行略低于提到的行?我怎样才能做到这一点?

我的 Cassandra 数据库模式是:-

create table xyz( id text,date text, dttime timestamp,roll text, primary key((id,date),dttime)

谢谢,

你可以将rdd分成两部分

1dttime 大于 gpsdt,按 dttime 升序排列 take 第一个

2dttime小于gpsdt,按dttime降序排列,take 第一个

最后 union 他们,你应该有你想要的行

以编程方式

val justGreater = rdd.filter(row => row.get[String]("dttime") > gpsdt).sortBy(row => row.get[String]("dttime")).take(1)
val justLess = rdd.filter(row => row.get[String]("dttime") < gpsdt).sortBy(row => row.get[String]("dttime"), false).take(1)
justGreater.union(justLess)

感谢@Alex Ott 指出 https://github.com/datastax/spark-cassandra-connector/blob/master/doc/2_loading.md