Flink线上问题汇总篇(2)-时区不一致系统时间少8小时导致数据丢失问题

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: flink按月度汇总数据,月初时数据部分丢失问题

初学flink的人绕不开的东西就是窗口,为什么这么说呢?首先要从流和批的概念介绍起,flink我认为其能火起来的一个必不可少的原因就是流批一体,而窗口正是界分流批的重要概念。初学的时候我们可能会学习滑动窗口和滚动窗口。但实际上我们可能通过顶层的table api或者sql api直接实现窗口的部分功能。

切入正题因为我们的需求是要针对每个月的数据进行分组聚合并展示,所以如果按照需求分析来说我们需要用到的是滑动窗口,也就是只针对本月的一个有限流。我们对数据的精准度要求比较高并且我们整个数据输入到flink的链路比较长中间肯定会存在延迟,针对这种情况我们需要设置的watermark就不好把控,容易造成数据丢失的现象。所以我们采用字符串匹配的方式,通过输入的时间字段与当前月时间字段进行匹配,用来做数据是否可以参与统计的标准。

方案交代完毕,就来说说问题。flink任务运行一直很稳定且每天进行数据核验的时候都是比较准确的,但是在本月的一号打开电脑核对数却发现比实际的少了很多。当时的第一印象就是会不会是跟上篇一样的原因—状态过期了!但是很快就否认了这个想法,因为一号才刚刚开始计数怎么可能过期。然后通过比对数据以及分析flink结果推入消息队列的时间发现晚上24点至早上8点的数据根本就没有参与计数!之后上网查资料发现我们使用的函数存在时区差问题flink低版本无法设置时区,而我们使用的是东八区。

下面直接上解决办法:

1.CAST(CURRENT_TIMESTAMP AS BIGINT) * 1000 + 8 * 60 * 60 * 1000直接加八小时

2.CAST(DATE_FORMAT(LOCALTIMESTAMP,'yyMM') AS VARCHAR) 使用LOCALTIMESTAMP获取当前系统时间

使用CURRENT_DATE、CURRENT_TIMESTAMP均会存在时区问题,LOCALTIMESTAMP可以放心使用。

以上观点为个人经验之谈,不正确的地方各位看官大神多多指正。


相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
7月前
|
消息中间件 关系型数据库 Kafka
flink cdc 数据问题之数据丢失如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
4月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版产品使用问题之使用CTAS同步MySQL到Hologres时出现的时区差异,该如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
存储 关系型数据库 MySQL
实时计算 Flink版产品使用问题之处理包含时间戳并且希望在摄取、转换或输出时考虑特定时区的CDC数据,该如何操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
SQL 关系型数据库 数据处理
实时计算 Flink版产品使用问题之使用的是JsonDebeziumDeserializationSchema,如何更改时区
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在online模式下增量抓取Oracle数据时,在archive_log切换时,出现数据丢失的情况,是什么原因
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
7月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错之遇到MySQL服务器的时区偏移量(比UTC晚18000秒)与配置的亚洲/上海时区不匹配,如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
7月前
|
关系型数据库 MySQL 数据库
实时计算 Flink版产品使用合集之在进行数据同步时,遇到了时区问题,怎么设置时区
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
67 1
|
7月前
|
SQL Java 关系型数据库
实时计算 Flink版产品使用合集之 TaskManager 上的所有 Managed Memory 占用率达到了 100%,是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
63 0
|
7月前
|
SQL Oracle 关系型数据库
Flink cdc报错问题之时区报错如何解决
Flink CDC报错指的是使用Apache Flink的Change Data Capture(CDC)组件时遇到的错误和异常;本合集将汇总Flink CDC常见的报错情况,并提供相应的诊断和解决方法,帮助用户快速恢复数据处理任务的正常运行。
Flink cdc报错问题之时区报错如何解决
|
7月前
|
存储 SQL Oracle
flink cdc 时区问题之文档添加参数无效如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。