data-group icon indicating copy to clipboard operation
data-group copied to clipboard

【问题】 app数据采集可能会存在数据上报延时,倾向于采用数据的生成的时间还是服务器收到的时间?

Open detectivelcy opened this issue 7 years ago • 3 comments

【场景】 行业原因,车开进地库了,就没有4G信号了,然后车主可能一周后再出车,此时数据才上来。导致app数据采集可能会存在数据上报延,数据会存在两个时间,数据生成的时间、服务器收到的时间。我们在建立ODS的时候,表的分区一般会采用天来做分区。 【目前想到的解决方案】 无论按服务器时间还是数据生成时间,因为dw是定期执行的,数据延迟到达的话无论如何都无法避免。此时只能针对特定业务来处理,和业务确认一个合理的最大延迟时间。超过最大延迟的丢弃。合理时间内的dw按数据生成时间来做,然后某些在dw上汇总统计操作再定期重跑。

detectivelcy avatar Apr 01 '18 04:04 detectivelcy

按服务器收到时间分区,按数据生成时间这个维度来进行统计,不冲突;就是如果不是每天统计全量的话,历史统计得重新计算。

qinglww avatar Apr 11 '18 11:04 qinglww

trade-off

  1. 延迟少的场景 <5min 采用服务器时间,因为客户端上报的时间有可能因为设置原因有误
  2. 延迟高的场景,比如几天 2.1 如果延迟高的数据占总体不到 0.1% 直接丢弃此类数据 2.2 占比比较大,可以如楼上所说,按服务时间分区,根据业务给定一个时间窗口,重跑历史数据

dengwanc avatar Aug 29 '19 10:08 dengwanc

建议按照数据生成时间做分区(也就是事件时间event time),确定定期重跑机制。 落分区可以使用Flume的自定义过滤器实现 @detectivelcy

qinchaofeng avatar Aug 08 '22 09:08 qinchaofeng