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

一、说明

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

二、数据准备

java 复制代码
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集合里面,统计集合长度,便可以统计到网站的访客数。

四、代码

java 复制代码
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<>();
                    @Override
                    public void processElement(UserBehavior value,
                                               Context ctx,
                                               Collector<String> out) throws Exception {
                        userIdset.add(value.getUserId());
                        out.collect("uv:"+ userIdset.size());



                    }
                }).print();
        env.execute();

    }
}
相关推荐
T06205143 分钟前
【数据集】285个地级市邻接矩阵、经济地理矩阵等8个矩阵数据(2003-2023年)
大数据
逸Y 仙X5 分钟前
文章十一:ElasticSearch Dynamic Template详解
java·大数据·数据库·elasticsearch·搜索引擎·全文检索
藦卡机器人10 小时前
中国工业机器人发展现状
大数据·人工智能·机器人
Simon_lca11 小时前
突破合规瓶颈:ZDHC Supplier to Zero(工厂零排放 - 进阶型)体系全攻略
大数据·网络·人工智能·分类·数据挖掘·数据分析·零售
mxwin12 小时前
Unity Shader 极坐标特效 从数学原理到实战案例
unity·游戏引擎·shader·uv
黄焖鸡能干四碗12 小时前
网络安全建设实施方案(Word文件参考下载)
大数据·网络·人工智能·安全·web安全·制造
云境筑桃源哇13 小时前
马踏春风 为爱启航 | 瑞派宠物医院(南部新城旗舰店)盛大开业!打造宠物医疗新标杆!
大数据·宠物
xixixi7777714 小时前
2026 年 03 月 20 日 AI+通信+安全行业日报(来更新啦)
大数据·人工智能·安全·ai·大模型·通信
F36_9_14 小时前
大数据治理平台选型避坑:2026 年 8 大主流系统实测
大数据·数据治理
成长之路51414 小时前
【实证分析】A股上市公司企业劳动力需求数据集(2000-2023年)
大数据