w******6 发帖数: 35 | 1 在公司刚开始工作,要用spark做一些数据处理
其中一个问题是,有一堆event,会导致状态来回变,想看某一个时刻的状态是啥
比如说,一个开关,一个事件是打开开关,一个事件是关上开关,最后看开关是开是关
。有可能有冗余的数据,比如关上关闭的,或者打开已经打开的。
像这种情况,怎么用spark在cluster上做计算D啊?我觉得顺序很重要啊,分布怎么能
保证顺序呢?或者没关系,最后还是能算到一起? |
s**********1 发帖数: 12 | 2 将数据根据时间排序后
1:00 on
1:11 off
2:00 on
2:11 off
2:20 off
2:40 on
比如要获得2:15时刻的状态,只需看离2:15最近的时刻(2:11)那个状态即可。
比如序列on on off off on 的最终状态是on
此法可以得到任意时刻的状态。
比如求2:15时刻的状态
# 时间从到大小排序
rdd.filter(lambda (time, event): time <= "2:15", reverse = true).sortByKey(
).take(1).
其实可以不用排序,根据时间取最大值就好了 |
c******4 发帖数: 701 | 3 是sparkstreaming吗?如果是的话应该有个checkpoint的文件夹,如果中途fail了,看
看里面有没有数据,说明已经结束,就重新new好了,如果有数据,就拿出来接着用。
如果用zookeeper的话,那个zookeeper也可以管理这些数据的状态 |