时间优化
业务数据中的时间一般都是秒级或者毫秒级别的时间戳。比如:1605429248
在我们的flink任务中,对时间的使用比较多的,在平时使用的过程中,对时间处理上的优化有点小小的建议
1.对时间做key by时(timeLong 标示时间戳:1605429248):
- 周一 00:00:00 :time - (time - (-28800 - (86400 * 3)) + 604800L) % 604800L
- 天:(timeLong + 28800) / 86400
- 小时:timeLong/3600
- 分钟:timeLong/60
2.判断两个时间戳相差天数,如 1614095700(2021-02-23 23:55:00) 和 1614102900(2021-02-24 01:55:00),相差一天,可以做算术逻辑处理
int diffDay = (1614102900+28800)/86400 - (1614095700+28800)/86400
Keyed 优化
key的数量尽量是有限的。如果key的数量无限,可以使用Hash,然后取余。将key存入state中,使用清理策略,将过去的key做处理。
本文探讨了在Flink任务中处理时间戳的优化策略,包括按天、小时和分钟对时间进行归一化的方法,并提供了计算时间戳之间相差天数的逻辑。此外,还介绍了Keyed优化的重要性,建议限制key的数量并使用清理策略处理过期key,以提高性能。
1138

被折叠的 条评论
为什么被折叠?



