根据时间戳过滤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分成两部分:
1 且 dttime
大于 gpsdt
,按 dttime
升序排列 take
第一个。
2且dttime
小于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
我有以下代码:-
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分成两部分:
1 且 dttime
大于 gpsdt
,按 dttime
升序排列 take
第一个。
2且dttime
小于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