简介:本文由阿里巴巴高级技术专家邓小勇(静行)分享,主要用 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。

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

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

有两种方案。

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

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

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

实战演示

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

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

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

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

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

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

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

运行刚刚写入的作业:

然后点击创建SQL作业,

创建完成后,点击启动。

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

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

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

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

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

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

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

原文链接:https://developer.aliyun.com/article/781195?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

实时计算pv/uv Demo演示相关推荐

  1. 实时计算pv/uv Demo

    简介: 本文由阿里巴巴高级技术专家邓小勇(静行)分享,主要用 Demo 演示如何通过实时计算 Flink 实时计算pv/uv的场景. 本文由阿里巴巴高级技术专家邓小勇(静行)分享,主要用 Demo 演 ...

  2. SparkStreaming实时计算pv和uv,注意事项以及生产问题

    SparkStreaming实时计算pv和uv,注意事项以及生产问题 1.项目流程 2.具体过程 1)pv的计算 2)uv的计算 3)结果保存到数据库 4)数据容错 5)保存offset到mysql ...

  3. Flink SQL 实时计算UV指标

    用一个接地气的案例来介绍如何实时计算 UV 数据.大家都知道,在 ToC 的互联网公司,UV 是一个很重要的指标,对于老板.商务.运营的及时决策会产生很大的影响,笔者在电商公司,目前主要的工作就是计算 ...

  4. Flink计算pv和uv的通用方法

    关注公众号:大数据技术派,回复"资料",领取`1024G`资料. Flink系列教程 PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次. UV ...

  5. 用户行为分析大数据系统(实时统计每个分类被点击的次数,实时计算商品销售额,统计网站PV、UV )

    Spark Streaming实战对论坛网站动态行为pv,uv,注册人数,跳出率的多维度分析_小强签名设计 的博客-CSDN博客_spark streaming uv 实时统计每天pv,uv的spar ...

  6. FLINK 基于1.15.2的Java开发-使用AggregateFunction解决以天为单位诸如PV、UV等统计的实时计算

    什么样的业务场景适合AggregateFunction 对于这一类的: 统计的数据的窗口为一天内(24小时),然后每X秒刷新一下相关数据的实时变化,每次变化的值是在之前的值上有一个累计,然后每天归0后 ...

  7. 基于实时计算Flink版的场景解决方案demo

    简介:通过两个demo分享技术实时计算flink版的解决方案 本文整理自阿里云智能行业解决方案专家GIN的直播分享 直播链接:https://developer.aliyun.com/learning ...

  8. 大数据(9f)Flink窗口函数练习:计算PV和UV

    文章目录 概述 需求 数据样本(页面ID,用户ID,时间戳) 环境和依赖 PV计算代码 UV计算代码 概述 需求 计算每小时每个页面的 PV 和 UV 数据样本(页面ID,用户ID,时间戳) {&qu ...

  9. flink实战教程-使用set实时计算当天网站uv

    文章目录 背景 案例讲解 模拟source 定义窗口 自定义聚合算子 处理输出结果 背景 对于web网站,我们一般会有这样的需求,实时的计算出来当天网站的uv,尽可能快的展示出来.今天我们就讲一下基于 ...

最新文章

  1. BZOJ 1208 宠物饲养所 Splay
  2. 修改mysql数据库服务器时间格式,修改本地mysql数据库时间格式
  3. hdu 2191 多重背包入门
  4. Apache Thrift的使用
  5. open_cursors参数设置调优
  6. 博文视点大讲堂第24期“PPT演示之道”专题讲座成功落幕
  7. 【51单片机】STC-ISP软件保姆级烧录教程(以普中A2开发板为例)
  8. 【教程】Win10安装SQLServer2005出现服务启动失败的问题解决
  9. PC Hunter V1.4
  10. 网站建设需做的工作,你知道吗?
  11. 四大因素使二三线城市楼市泡沫难救?
  12. Linux上搭建ElasticSearch-8.x集群以及安装Kibana(保姆级安装教程)
  13. RS-485总线布线规则及方法
  14. ssm整合开发配置文件
  15. Maximum Noise Fraction (MNF) 中文翻译
  16. 基于Python pyqt5的随机抽号机源代码 ,可设置抽号器的人数及刷新间隔
  17. 华为设备Telnet配置命令及注释
  18. 自动控制原理复习——第一章绪论
  19. android 模拟器 xposd,xposed开发入门向之入门前准备工作 模拟器安装xposed框架
  20. Spring Boot中的application.properties配置简介(二)

热门文章

  1. mysql explain中的type列含义和extra列的含义
  2. 还在对Matplotlib繁琐的图层设置感到烦恼!?快来看看这个Python绘图工具包吧
  3. 为进大厂刷爆算法题,最后却倒在了基础题上?太苦了!
  4. 那么多MarkDown编辑器,最专业的还是这一款!
  5. 反转!奥斯卡般演技的果小云水果店耍了全世界!
  6. php 数组重新打乱_PHP 将数组打乱 shuffle函数的用法及简单实例
  7. html div box,html – 为转换后的div添加box-shadow
  8. android 首页6个碎片,Android 单帧碎片
  9. mysql5.7学习nosql_如何学习NoSQL?
  10. 初学者不建议月python吗_9.python入门