Flink实时计算指标对数方案

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Flink实时计算指标对数方案

对于一个实时数据产品人员、或者开发人员来说,产品上展示的实时数据,pv、uv、gmv等等,怎么知道这些数据是不是正确的呢?当其他的小组开发的产品的数据(或者其他的数据提供方)又是另外一个数字,那么究竟该如何判断自己的数据还是别人的数据是正确的呢?这就需要一套实时数据对数方案,本文主要从背景、实时数据计算方案、对数方案、总结四方面来介绍,说服老板或者让其他人相信自己的数据是准确的、无误的。

一、背景:

相信做过实时数据统计的朋友,肯定会遇到一个问题,怎么知道自己算的数据是不是对的呢?比如:pv、uv、dau、gmv、订单等等统计数据。

二、实时数据统计方案

上述流程图描述了一般的实时数据计算流程,接收日志或者MQ到kafka,用Flink进行处理和计算,将最终计算结果存储在redis中,最后查询出redis中的数据给大屏、看板等展示。

但是在整个过程中,不得不思考一下,最后计算出来的存储在redis中指标数据是不是正确的呢?怎么能给用户或者老板一个信服的理由呢?相信这个问题一定是困扰所有做实时数据开发的朋友。

比如说:离线的同事说离线昨天的数据订单是1w,实时昨天的数据确实2w,存在这么大的误差,到底是实时计算出问题了,还是离线出问题了呢?

三、对数解决方案

为了方便理解,还是拿上面离线和实时的下单金额为例。

某电商双11实时数据大屏最终展示的GMV是200亿,小李当晚汇报给老板,双11GMV是200亿。第二天晨会,离线的同事小王汇报给老板,双11GMV是300亿。同时又有一个数据部门的同事小赵说,我们这边计算的是192亿。老板听到这么多数据,一瞬间就不知道该相信谁的呢?然后就说,小李、小王你们两数据差距最大,你们对一下吧,汇报我一个最终结果。

于是,小王看着自己数据告诉小李:某人在我们平台下了30个iphone x合计多少钱、某人又在我们这里买了10台联想笔记本电脑合计多少钱 .......

小李看着最终展示在大屏上的200亿GMV,瞬间就蒙了,心里想道:我这里不知道谁买了多少个iphone呀,也不知道他们花了多少钱呀?

于是小李回去请教了自己的导师,导师说你把上面的实时宽表数据存储下来,就可以和他们对了,就知道谁买了多少个iphone x了,谁有买了多少个联想电脑了。

小李想了想,按照导师的思路开发如下的宽表加工方案:

(1)用Flink将实时宽表数据存储至elasticsearch

将加工的宽表数据通过Flink写入es,这样可以得到所有数据的明细数据,拿着明细和其他数据提供方进行比对即可。

(2)用Flink实时宽表数据存储至HDFS,通过Hive进行查询

但是有一些朋友可能会说,es对应的sql count、group by语法操作,非常复杂,况且也不是用来做线上服务,而只是用与对数,所以时效性也不需要完全考虑,这样的话,就可以考虑将数据回写至HDFS了。

因此可以考虑采用下图的方案,将加工的宽表通过Flink写入到HDFS,然后新建hive表进行关联HDFS数据进行关联查询。

写HDFS与es相比,存在非常明显的优点:

a.学习成本低、会sql的基本就可以了,而不需要重新学习es负责的count、group by 等语法操作

b.可以非常方便地和离线表数据进行关联查询(大多数情况下都是和离线数据比对),两张Hive表的关联查询,容易找出两张表的数据差异

 

最终小李拿着自己存储的明细数据和小王对了一下,发现是小王的口径不一样,没有排除一些预售订单,最终小李将汇报给老板,得到了老板的嘉奖。

四、总结

实时计算能提供给用户查看当前的实时统计数据,但是数据的准确性确实一个很大的问题,如何说服用户或者领导数据计算是没有问题的,就需要和其他的数据提供方进行比对了。问题的关键就在于,只要有明细数据,就可以和任意一方进行比对,毕竟有明细数据。不服?我们就对一对啊。

明细数据的存储、设计也很有讲究,可以和离线或者其他提供方的数据字段进行对齐,这样就非常方便进行比对了,而采用hive这种方式又是最简便的方式了,毕竟大多数人都是会sql的,无论开发人员还是数据人员或者BI人员。


相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
6天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之有没有什么好的配置方案
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
10 1
|
8天前
|
存储 消息中间件 运维
友盟+|如何通过阿里云Flink+Paimon实现流式湖仓落地方案
本文主要分享友盟+ U-App 整体的技术架构,以及在实时和离线计算上面的优化方案。
363 1
友盟+|如何通过阿里云Flink+Paimon实现流式湖仓落地方案
|
8天前
|
缓存 分布式计算 Apache
Apache Hudi与Apache Flink更好地集成,最新方案了解下?
Apache Hudi与Apache Flink更好地集成,最新方案了解下?
74 0
|
8天前
|
SQL Java API
Flink部署问题之committedOffsets指标为负值如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
8天前
|
Java 流计算
Flink指标汇总
Flink指标汇总
|
8天前
|
SQL 存储 Apache
Paimon 实践 | 基于 Flink SQL 和 Paimon 构建流式湖仓新方案
Paimon 实践 | 基于 Flink SQL 和 Paimon 构建流式湖仓新方案
512 1
|
8天前
|
SQL 关系型数据库 MySQL
基于 Flink CDC 打造企业级实时数据集成方案
基于 Flink CDC 打造企业级实时数据集成方案
|
8天前
|
SQL 存储 Apache
基于 Flink SQL 和 Paimon 构建流式湖仓新方案
阿里云智能开源表存储负责人,Founder of Paimon,Flink PMC 成员李劲松在云栖大会开源大数据专场的分享。
842 0
基于 Flink SQL 和 Paimon 构建流式湖仓新方案
|
8天前
|
Prometheus 资源调度 监控
在Flink on Yarn中,确实可以使用Prometheus的Pushgateway来获取监控指标
在Flink on Yarn中,确实可以使用Prometheus的Pushgateway来获取监控指标
93 2
|
8天前
|
监控 API 数据处理
Flink web ui不仅仅是一个监控指标性能的网站
Flink web ui不仅仅是一个监控指标性能的网站
115 3