实时计算pv/uv Demo

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 本文由阿里巴巴高级技术专家邓小勇(静行)分享,主要用 Demo 演示如何通过实时计算 Flink 实时计算pv/uv的场景。

作者 | 邓小勇(静行),阿里巴巴高级技术专家

本文由阿里巴巴高级技术专家邓小勇(静行)分享,主要用 Demo 演示如何通过实时计算 Flink 实时计算pv/uv的场景。内容将从以下几部分进行:

  1. App 计算 pv/uv 场景
  2. 实现方案(From Flink-1.11)
  3. DDL
  4. DML
  5. 实操

首先为大家展示一个比较简单的pv/uv场景。以下图所示的APP为例,整个业务构架需要几个入口,包括用户访问入口、作者入口和运营人员入口。在运营人员入口进去可以查看系统的一些指标,比如app 的pv/uv。

幻灯片3.png

在开始介绍如何计算实时pv/uv之前,可以先了解下上图的10个字段和它们对应的含义。通过这些字段可以了解到,用户在APP上的任何一次操作都会在数据库中留下一条对应的记录,所有记录就是该用户在APP上的操作流水。

那么如何实时计算pv/uv呢?

有两种方案。

幻灯片4.png

方案一,MySQL的变更数据同步到Kafka后进行实时计算。由于 Flink在设计之初是具有流表二象性的,所以在 Flink 1.1版本之后,就可以实现 Flink 对 Kafka变更数据的处理了,包括处理一些修改、删除等操作。处理后的结果会放到阿里云Hologress里,方便用户进行大数据查询和分析。

方案二,从上图可以看到方案一比方案二只多了一个Kafka,在 Flink 1.11 版本之后,可以直接通过Debezium连接MySQL,然后经过Flink 实时计算,也可以完成同样功能。

两个方案都可以实现,那么如何选择呢?主要取决于业务。如果数据只是暂存,日志需要展示或是需要多个下游使用,需要保存到Kafka;如果日志不需要回溯,或是没有下游使用,那么方案二更适合。

实战演示

如下图所示,我们选择方案二(MySQL-CDC源表方式)来演示。

幻灯片5.png

首先打开实时计算 Flink平台,点击左侧SQL编辑器,然后通过Create Table方式设定上文提到的10个字段。这样就定义了数据的源头。

image.png

定义源头之后,接下来要构建目标表。如下图所示,在构建目标表时,定义了blackhole_pv_uv表,构造了一个无实际存储的目标端,充当调试作用,先把逻辑跑通,然后再去往目标端去写代码。Blackhole 会吸收掉输出结果数据,先处理掉源端和计算的问题。

image.png

以上的表会落到 Flink Catalog里,对于实时计算pv/uv上下游表格的准备就完成了。如果需要调整表,也可以通过DDL SQL语句完成。

做好建表准备后,如何实时计算想要达到的目标呢?以最简单的方式来演示。

先把数据写到Blackhole里,然后把4个字段值计算出来,比如cuurenttime,event_hour等。

image.png

通过上图所示的代码可以计算出,数据是什么时候输入的,数据的pv/uv值等等。

运行刚刚写入的作业:

image.png

然后点击创建SQL作业,

image.png

创建完成后,点击启动。

image.png

启动后可以点击 Flink UI 来查看运行状态。查看时候可以看到下端有显示记录了8条数据:

image.png

回到数据库也能看到对应的8条数据:

image.png

如何把实际的结果写到holo里呢?

核心逻辑与上文实时计算的逻辑是一样的,唯一不一样的是,要把计算的结果既输出到holo_pv_uv里去,同时也输出到backhole里去,也就是要把同样的结果输出两份,这是在流计算里经常会遇到的情况。甚至还有在同一作业里不同的业务逻辑或计算结果,也要输出到不同的目标端的情况。

打开实时计算 Flink 页面的SQL编辑器,在输入框中创建 temporary view,把数据记录到blackhole 里和holo里。

为了实现这个目标,需要增加一个叫begin statement set和end的语法,这其实是定义了一个计算逻辑,使得在它们中间的逻辑任务就会同时运行。

image.png

然后完成部署、创建作业和启动后,就能看到这个计算逻辑已经成功了。

image.png

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
消息中间件 SQL 资源调度
Flink on zeppelin 结合kafka实时计算pv uv写入mysql
上一篇文章主要介绍了Flink on zeppelin的安装和使用,配置了yarn的模式跑通了一个streaming wordcount的例子,本文主要介绍结合kafka的使用,实时计算一个简单的pv,uv把结果写入到mysql的例子. 添加依赖包 首先需要添加kafka以及mysql的jar包,有两种方式,第一种是直接把jar包添加到Flink的lib下面,如下所示:
|
存储 SQL JSON
Flink实时计算pv、uv的几种方法
我的Git地址实时统计pv、uv是再常见不过的大数据统计需求了,前面出过一篇SparkStreaming实时统计pv,uv的案例,这里用Flink实时计算pv,uv。我们需要统计不同数据类型每天的pv,uv情况。因此计算pv、uv的几种方法。
1560 0
Flink实时计算pv、uv的几种方法
|
消息中间件 存储 NoSQL
Flink计算pv和uv的通用方法
PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次。 UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。 计算网站App的实时pv和uv,是很常见的统计需求,这里提供通用的计算方法,不同的业务需求只需要小改即可拿来即用。
393 0
Flink计算pv和uv的通用方法
|
消息中间件 SQL 关系型数据库
实时计算 Flink 版 pu/uv Demo |学习笔记
快速学习 实时计算 Flink 版 pu/uv Demo
215 0
实时计算 Flink 版 pu/uv Demo |学习笔记
|
SQL 分布式计算 流计算
Flink计算PV,UV的案例及问题分析
PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次。 UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。 一个UV可以用很多PV,一个PV也只能对应一个IP 没有这些数据的支持,意味着你不知道产品的发展情况,用户获取成本,UV,PV,注册转化率;没有这些数据做参考,你不会知道接下来提供什么建议给领导采纳,也推测不出领导为啥烦忧,那么就么有任何表现的机会。 举两个UV计算的场景: 1. 实时计算当天零点起,到当前时间的uv。 2. 实时计算当天每个小时的UV。0点
457 0
实时计算Flink版 + Hologres,亿级用户实时 UV 精确去重最佳实践
使用实时计算Flink版 + Hologres 方式,并基于 RoaringBitmap,实时对用户标签去重。
实时计算Flink版 + Hologres,亿级用户实时 UV 精确去重最佳实践
|
消息中间件 SQL 监控
Flink+Hologres亿级用户实时UV精确去重最佳实践
Flink+Hologres亿级用户实时UV精确去重最佳实践
1759 0
Flink+Hologres亿级用户实时UV精确去重最佳实践
|
消息中间件 Web App开发 监控
Flume+Kafka+Flink+Redis构建大数据实时处理系统:实时统计网站PV、UV展示
1.大数据处理的常用方法 大数据处理目前比较流行的是两种方法,一种是离线处理,一种是在线处理,基本处理架构如下: 在互联网应用中,不管是哪一种处理方式,其基本的数据来源都是日志数据,例如对于web应用来说,则可能是用户的访问日志、用户的点击日志等。
21469 15
|
3月前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
593 5
|
2月前
|
SQL Java API
官宣|Apache Flink 1.19 发布公告
Apache Flink PMC(项目管理委员)很高兴地宣布发布 Apache Flink 1.19.0。
1617 2
官宣|Apache Flink 1.19 发布公告

相关产品

  • 实时计算 Flink版