0


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

一、说明

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

二、数据准备

packagecom.lyh.flink06;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;@Data@NoArgsConstructor@AllArgsConstructorpublicclassUserBehavior{privateLong userId;privateLong itemId;privateInteger categoryId;privateString behavior;privateLong timestamp;}

三、思路

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

四、代码

packagecom.lyh.flink06;importorg.apache.flink.streaming.api.environment.StreamExecutionEnvironment;importorg.apache.flink.streaming.api.functions.KeyedProcessFunction;importorg.apache.flink.util.Collector;importjavax.naming.ldap.HasControls;importjava.util.HashSet;importjava.util.Set;publicclassPUcount{publicstaticvoidmain(String[] args)throwsException{StreamExecutionEnvironment env =StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(2);
        env.readTextFile("input/UserBehavior.csv").map(line ->{String[] data = line.split(",");returnnewUserBehavior(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(newKeyedProcessFunction<String,UserBehavior,String>(){Set<Long> userIdset =newHashSet<>();@OverridepublicvoidprocessElement(UserBehavior value,Context ctx,Collector<String> out)throwsException{
                        userIdset.add(value.getUserId());
                        out.collect("uv:"+ userIdset.size());}}).print();
        env.execute();}}
标签: 大数据 flink uv

本文转载自: https://blog.csdn.net/s_unbo/article/details/132378686
版权归原作者 人猿宇宙 所有, 如有侵权,请联系我们删除。

“大数据-玩转数据-Flink 网站UV统计”的评论:

还没有评论