基于Flink的实时项目—关于用户行为的数据分析

项目是有关于电商的用户行为数据分析,包括以下几部分内容:
1.批处理和流处理
2.电商用户行为分析
3.数据源分析
4.项目模块划分

1.批处理和流处理

1.批处理概念

批处理主要操作大容量静态数据集,并在计算过程完成后返回结果。可以认为,处理的是用一个固定时间间隔分组的数据点集合。批处理模式中使用的数据集通常符合下列特征:
1.有界:批处理数据集代表数据的有限集合
2.持久:数据通常始终存储在某种类型的持久存储位置中
3.大量:批处理操作通常是处理极为海量数据集的唯一方法

2.流处理的概念

流处理可以对随时进入系统的数据进行计算。流处理方式无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作。流处理中的数据集是“无边界”的,这就产生了几个重要的影响:
1.可以处理几乎无限量的数据,但同一时间只能处理一条数据,不同记录间只维持最少量的状态
2.处理工作是基于事件的,除非明确停止否则没有“尽头”
3.处理结果立刻可用,并会随着新数据的抵达继续更新。

2.电商用户行为分析

1.用户行为分析

1.统计分析
(1)点击、浏览
(2)热门商品、近期热门商品、分类热门商品,流量统计
2.偏好统计
(1)收藏、喜欢、评分、打标签
(2)用户画像,推荐列表(结合特征工程和机器学习算法)
3.风险控制
(1)下订单、支付、登录
(2)刷单监控,订单失效监控,恶意登录(短时间内频繁登录失败)监控

2.项目模块设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.数据源解析

1.数据结构——UserBehavior
在这里插入图片描述
2.数据结构——ApacheLogEvent
在这里插入图片描述

4.项目模块

1.实时热门商品统计

1.基本需求:
(1)统计近一小时内的热门商品,每5分钟更新一次
(2)热门度用浏览次数(“pv”)来衡量
2.解决思路
(1)在所有用户行为数据中,过滤出浏览(“pv”)行为进行统计
(2)构建滑动窗口,窗口长度为1小时,滑动步长为5分钟

数据类型流程图:
在这里插入图片描述
3.热门实时商品统计
(1)按照商品Id进行分区
在这里插入图片描述
(2)设置时间窗口
在这里插入图片描述(3)时间窗口(timeWindow)区间为左闭右开
(4)同一份数据会被分发到不同的窗口
在这里插入图片描述
(5)窗口聚合
在这里插入图片描述
(6)窗口聚合策略——每出现一条记录就加一
在这里插入图片描述
(7)累加规则——窗口内碰到一条数据就加一(add方法)
(8)实现AggregateFunction接口
(9)定义输出结构——ItemViewCount(itemId,windowEnd,count)
(10)实现WindowFunction接口
在这里插入图片描述
(11)窗口聚合示例
在这里插入图片描述
(12)进行统计整理——keyBy(“windowEnd”)
在这里插入图片描述
(13)状态编程
在这里插入图片描述
(14)最终排序输出——keyedProcessFunction

1)针对有状态流的底层API
2)KeyedProcessFunction会对分区后的每一条子流进行处理
3)以windowEnd作为key,保证分流以后每一条流的数据都在一个时间窗口内
4)从ListState中读取当前流的状态,存储数据进行排序输出
(15)用ProcessFunction来定义KeyedStream的处理逻辑
(16)分流之后,每个KeyedStream都有自己的生命周期:
1)open:初始化,在这里可以获取当前流的状态
2)processElement:处理流中的每一个元素时调用
3)onTimer:定时调用,注册定时器Timer并触发之后的回调操作
在这里插入图片描述

2.实时流量统计

1.热门页面

1.基本需求
(1)从web服务器的日志中,统计实时的热门访问页面
(2)统计每分钟的ip访问量,取出访问量最大的5个地址,每5秒更新一次
2.解决思路
(1)将apache服务器日志中的时间,转换为时间戳,作为Event Time
(2)构建滑动窗口,窗口长度为1分钟,华东距离为5秒

2.PV和UV

1.基本需求
(1)从埋点日志中,统计实时的PV和UV
(2)统计每小时的访问量(PV),并且对用户进行去重(UV)
2.解决思路
(1)统计埋点日志中的pv行为,利用Set数据结构进行去重
(2)遂于超大规模的数据,可以考虑用布隆过滤器进行去重

3.APP市场推广统计

1.基本需求
(1)从埋点日志中,统计APP市场推广的数据指标
(2)按照不同的推广渠道,分别进行统计
2.解决思路
(1)通过过滤日志中的用户行为,按照不同的渠道进行统计
(2)可以用process function处理,得到自定义的输出数据信息

4.页面广告统计

1.基本需求
(1)从埋点日志中,统计每小时页面的广告的点击数,5秒苏哈新一次,并按照不同省份进行划分
(2)对于“刷单”式的频繁点击行为进行过滤,并将用户加入黑名单
2.解决思路
(1)根据省份进行分组,创建长度为1小时、华东距离为5秒的时间窗口进行统计
(2)可以用process function进行黑名单过滤,检测用户对同一广告的点击量,如果超过上限则将用户信息以侧输出流输出到黑名单中

3.恶意登录监控

1.基本需求
(1)用户在短时间内频繁登录失败,有程序恶意攻击的可能
(2)同一用户(可以是不同IP)在2秒内连续两次登录失败,需要报警

2.解决思路
(1)将用户的登录失败行为存入ListState,设定定时器2秒后触发,查看ListState 中有几次失败登录
(2)更加精确的检测,可以使用CEP库实现事件流的模式匹配

4.订单支付失效监控

1.订单支付实时监控

1.基本需求
(1)用户下单之后,应设置订单失效时间,以提高用户支付的意愿,并降低系统风险
(2)用户下单后15分钟未支付,则输出监控信息

2.解决思路
(1)利用CEP库进行事件流的模式匹配,并设定匹配的时间间隔
(2)也可以利用状态编程,用process function实现处理逻辑

2.订单支付实时对账

1.基本需求
(1)用户下单并支付后,应查询到账信息,进行实时对账
(2)如果有不匹配的支付信息或者到账信息,输出提示信息
2.解决思路
(1)从两条流中分别读取订单支付信息和到账信息,合并处理
(2)用connect连接合并两条流,用coProcessFunction 做匹配处理

【注】内容是对尚硅谷的内容进行修改。

Guess you like

Origin blog.csdn.net/weixin_48929324/article/details/117225257