当前位置: 首页 > news >正文

大数据-玩转数据-Flink 网站UV统计

一、说明

在实际应用中,我们往往会关注,到底有多少不同的用户访问了网站,所以另外一个统计流量的重要指标是网站的独立访客数(Unique Visitor,UV)。

二、数据准备

package com.lyh.flink06;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserBehavior {private Long userId;private Long itemId;private Integer categoryId;private String behavior;private Long timestamp;
}

三、思路

对于UserBehavior数据源来说,我们直接可以根据userId来区分不同的用户。
将userid放到SET集合里面,统计集合长度,便可以统计到网站的访客数。

四、代码

package com.lyh.flink06;import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.functions.KeyedProcessFunction;
import org.apache.flink.util.Collector;import javax.naming.ldap.HasControls;
import java.util.HashSet;
import java.util.Set;public class PUcount {public static void main(String[] args) throws Exception {StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();env.setParallelism(2);env.readTextFile("input/UserBehavior.csv").map(line -> {String[] data = line.split(",");return new UserBehavior(Long.valueOf(data[0]),Long.valueOf(data[1]),Integer.valueOf(data[2]),data[3],Long.valueOf(data[4]));}).filter(ub ->"pv".equals(ub.getBehavior())).keyBy(UserBehavior::getBehavior).process(new KeyedProcessFunction<String, UserBehavior, String>() {Set<Long> userIdset = new HashSet<>();@Overridepublic void processElement(UserBehavior value,Context ctx,Collector<String> out) throws Exception {userIdset.add(value.getUserId());out.collect("uv:"+ userIdset.size());}}).print();env.execute();}
}
http://www.lryc.cn/news/131417.html

相关文章:

  • 3分钟了解下cwnd和TCP拥塞控制算法
  • 设计模式之状态模式(State)的C++实现
  • 无涯教程-TensorFlow - Keras
  • 使用SSH隧道将Ubuntu云服务器Jupyter Notebook端口映射到本地
  • Keepalived+LVS部署高可用集群
  • 2023河南萌新联赛第(五)场:郑州轻工业大学
  • 在Orangepi5开发板3588s使用opencv获取摄像头画面
  • 音视频 ffmpeg命令分类查询
  • VSCode无法从Extensions下载工具时,把工具下载到本地并添加到VSCode编辑器
  • WebStrom 前端项目Debug
  • 【ARM Linux 系统稳定性分析入门及渐进12 -- GDB内存查看命令 “x“(examine)】
  • kube-prometheus 系列1 项目介绍
  • 深度学习在组织病理学图像分析中的应用: Python实现和代码解析
  • kotlin的列表
  • PCL 三维点云边界提取(C++详细过程版)
  • ../../ 目录遍历
  • clickhouse集群部署
  • centos8 使用phpstudy安装tomcat部署web项目
  • 爬虫百度返回“百度安全验证”终极解决方案
  • visual studio 2022配置
  • B-树和B+树的区别
  • c注册cpp回调函数
  • 批量将excel中字段为“八百”替换成“九百”
  • 关于docker-compose up -d在文件下无法运行的原因以及解决方法
  • 机器学习笔记 - 基于keras + 小型Xception网络进行图像分类
  • 【Unity每日一记】SceneManager场景资源动态加载
  • 自动驾驶数据回传需求
  • 使用Jmeter自带recorder代理服务器录制接口脚本
  • 我和 TiDB 的故事 | 远近高低各不同
  • 深入浅出Pytorch函数——torch.nn.init.zeros_