实时计算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学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
6月前
|
Java 流计算
【极数系列】Flink搭建入门项目Demo & 秒懂Flink开发运行原理(05)
【极数系列】Flink搭建入门项目Demo & 秒懂Flink开发运行原理(05)
235 3
|
3月前
|
SQL 流计算
Flink SQL 在快手实践问题之使用Dynamic Cumulate Window绘制直播间累计UV曲线如何解决
Flink SQL 在快手实践问题之使用Dynamic Cumulate Window绘制直播间累计UV曲线如何解决
60 1
|
5月前
|
关系型数据库 MySQL 数据库
实时计算 Flink版操作报错合集之下载了mysql的cdc的demo,在本地调试时,报错:找不到这个包,该怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
168 0
|
6月前
|
API 流计算
flink读写hudi的demo
flink读写hudi的demo
|
11月前
|
SQL 监控 Oracle
flink OracleCDC是不是还不支持DDL变更?怎么按照文档里面的Demo来操作 开启了includeSchemaChanges 还是监听不到
flink OracleCDC是不是还不支持DDL变更?怎么按照文档里面的Demo来操作 开启了includeSchemaChanges 还是监听不到
104 2
|
SQL 存储 监控
基于 Flink 的实时大数据应用 Demo|学习笔记
快速学习基于 Flink 的实时大数据应用 Demo。
564 0
基于 Flink 的实时大数据应用 Demo|学习笔记
|
消息中间件 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的几种方法。
1746 0
Flink实时计算pv、uv的几种方法
|
消息中间件 存储 NoSQL
Flink计算pv和uv的通用方法
PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次。 UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。 计算网站App的实时pv和uv,是很常见的统计需求,这里提供通用的计算方法,不同的业务需求只需要小改即可拿来即用。
481 0
Flink计算pv和uv的通用方法
|
消息中间件 SQL 关系型数据库
实时计算 Flink 版 pu/uv Demo |学习笔记
快速学习 实时计算 Flink 版 pu/uv Demo
252 0
实时计算 Flink 版 pu/uv Demo |学习笔记

相关产品

  • 实时计算 Flink版