Flink实时计算指标对数方案

2024-09-06 21:32

本文主要是介绍Flink实时计算指标对数方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来源:大数据技术与架构读者投稿
作者:诸葛子房

点击右侧关注,大数据开发领域最强公众号!

点击右侧关注,暴走大数据!



By  大数据技术与架构

作者简介: 诸葛子房 ,目前就职于一线互联网公司,从事大数据相关工作,了解互联网、大数据相关内容,一直在学习的路上 。
原作者就在我们的交流群中,有需要的可以联系作者探讨。
回复:加群,拉你进讨论组。

关键词:Flink 指标对数 

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

一、背景:

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

640

二、实时数据统计方案

640

上述流程图描述了一般的实时数据计算流程,接收日志或者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

640

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

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

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

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

640

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

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

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

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

四、总结

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

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

欢迎点赞+收藏+转发朋友圈素质三连

640?wx_fmt=jpeg640?wx_fmt=jpeg

文章不错?点个【在看】吧! ?

这篇关于Flink实时计算指标对数方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143174

相关文章

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

Java解析JSON的六种方案

《Java解析JSON的六种方案》这篇文章介绍了6种JSON解析方案,包括Jackson、Gson、FastJSON、JsonPath、、手动解析,分别阐述了它们的功能特点、代码示例、高级功能、优缺点... 目录前言1. 使用 Jackson:业界标配功能特点代码示例高级功能优缺点2. 使用 Gson:轻量

Redis KEYS查询大批量数据替代方案

《RedisKEYS查询大批量数据替代方案》在使用Redis时,KEYS命令虽然简单直接,但其全表扫描的特性在处理大规模数据时会导致性能问题,甚至可能阻塞Redis服务,本文将介绍SCAN命令、有序... 目录前言KEYS命令问题背景替代方案1.使用 SCAN 命令2. 使用有序集合(Sorted Set)

MyBatis延迟加载的处理方案

《MyBatis延迟加载的处理方案》MyBatis支持延迟加载(LazyLoading),允许在需要数据时才从数据库加载,而不是在查询结果第一次返回时就立即加载所有数据,延迟加载的核心思想是,将关联对... 目录MyBATis如何处理延迟加载?延迟加载的原理1. 开启延迟加载2. 延迟加载的配置2.1 使用

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影