电商用户行为数据分析
- flink==1.7.2
- scala==2.11
- kafka==2.2.0
- 基本需求
统计近1小时内的热门商品,每5分钟更新一次
热门度用浏览次数(“pv”)来衡量
- 解决思路
在所有用户行为数据中,过滤出浏览(“pv”)行为进行统计
构建滑动窗口,窗口长度为1小时,滑动距离为5分钟
- 基本需求
从web服务器的日志中,统计实时的访问流量
统计每分钟的ip访问量,取出访问量最大的5个地址,每5秒更新一次
- 解决思路
将 apache 服务器日志中的时间,转换为时间戳,作为 Event Time
构建滑动窗口,窗口长度为1分钟,滑动距离为5秒
- 基本需求
从埋点日志中,统计实时的PV和UV
统计每小时的访问量(PV),并且对用户进行去重(UV)
- 解决思路:
统计埋点日志中的pv行为,使用Set数据结构进行去重
对于超大规模的数据,可以考虑用布隆过滤器进行去重
- 基本需求
从埋点日志中,统计APP市场推广的数据指标
按照不同的推广渠道,分别统计数据
- 解决思虑
通过过滤日志中的用户行为,按照不同的渠道进行统计
可以用process function处理,得到自定义的输出数据信息
- 基本需求
从埋点日志中,统计每小时页面广告的点击量,5秒刷新一次,按照不同省份进行划分
对于“刷单”式的频繁点击行为进行过滤,并将该用户加入黑名单
- 解决思路
根据省份进行分组,创建长度为1小时,滑动距离为5秒的窗口进行统计
可以使用process function 进行黑名单过滤,检测用户对同一广告的点击量,如果超过上限则将用户信息已侧输出流输出到黑名单中
- 基本需求
用户在短时间内频繁登录失败,有程序恶意攻击的可能
同一用户(可以是不同IP)在2秒内连续两次登录失败,需要报警
- 解决思路
将用户的登录失败行为存入 ListState,设定定时器2秒后触发,查看 ListState 中有几次失败登录
更加精确的检测,可以使用 CEP 库实现事件流的模式匹配
- 基本需求
用户下单之后,应设置订单失效时间,以提高用户支付的意愿,并降低系统风险;另外,订单的支付可以做实时确认
用户下单后15分钟未支付,则输出监控信息
- 解决思路
利用 CEP 库进行事件流的模式匹配,并设定匹配的时间间隔
对两条流的订单交易用 connect 合并起来,做匹配处理
- 基本需求
用户下单并支付后,应查询到账信息,进行实时对账
如果有不匹配的支付信息或者到账信息,输出提示信息
- 解决思路
从两条流中分别读取订单支付信息和到账信息,合并处理
用connect连接合并两条流,用从CoProcessFunction做匹配处理
用intervalJoin连接合并两条流,用ProcessJoinFunction做匹配处理