我在研究疯狂的时间序列数据。所以,我有两个Kafka主题-1)实时时间序列数据移动车辆每5秒。2) 10%的车辆的历史时间序列数据如果车辆在偏远地区行驶,那么一旦数据进入网络,就可以在几个小时、几天或几周之后发送。
所以,我的Cassandratable有点像这样
CREATE TABLE locationinfo (
imei text,
date text,
entrydt timestamp,
gpsdt timestamp,
lastgpsdt timestamp,
latitude text,
longitude text,
odo int,
speed int,
PRIMARY KEY ((imei, date), gpsdt)
) WITH CLUSTERING ORDER BY (gpsdt ASC)
&我使用spark streaming从kafka获取数据并插入cassandra,这里的聚类关键是gpsdt。每当历史数据来自Kafka时,表中就会发生很多混乱,因为我们知道Cassandra的体系结构。数据只是按顺序存储在定义的分区上&对于历史条目,记录来自行之间。所以,经过一段时间后,spark流应用程序就会挂起。经过大量搜索,我发现我的表策略可能有一些问题,所以如果我创建这样的表模式-
CREATE TABLE locationinfo (
imei text,
date text,
entrydt timestamp,
gpsdt timestamp,
lastgpsdt timestamp,
latitude text,
longitude text,
odo int,
speed int,
PRIMARY KEY ((imei, date), entrydt)
) WITH CLUSTERING ORDER BY (entrydt ASC)
在这里,顺序是按插入时间定义的,所以每当历史数据出现时,它总是在最后一个数据中追加,并且不会有洗牌的开销。但是,在这种情况下,我将无法在gpsdt上进行范围查询。所以,我想知道处理这种情况的最佳策略是什么。我从Kafka的负载超过2k/秒。
暂无答案!
目前还没有任何答案,快来回答吧!