flink中如何使用set实时计算当天网站uv
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,flink中如何使用set实时计算当天网站uv,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。背景对于web网站,我们一般会有这样的需
千家信息网最后更新 2025年02月04日flink中如何使用set实时计算当天网站uv
flink中如何使用set实时计算当天网站uv,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
背景
对于web网站,我们一般会有这样的需求,实时的计算出来当天网站的uv,尽可能快的展示出来。今天我们就讲一下基于java的set集合做一下实时uv的统计。
简易需求:
实时计算出当天零点截止到当前时间各个端(android,ios,h6)下的uv 每秒钟更新一次统计结果
案例讲解
模拟source
首先我们模拟生成一下最简单的数据,生成一个flink的二元组Tuple2.分别表示分类和用户id
public static class MySource implements SourceFunction>{
private volatile boolean isRunning = true;
String category[] = {"Android", "IOS", "H5"};
@Override
public void run(SourceContext> ctx) throws Exception{
while (isRunning){
Thread.sleep(10);
//具体是哪个端的用户
String type = category[(int) (Math.random() * (category.length))];
//随机生成10000以内的int类型数据作为userid
int userid = (int) (Math.random() * 10000);
ctx.collect(Tuple2.of(type, userid));
}
}
@Override
public void cancel(){
isRunning = false;
}
}
定义窗口
接下来我们定义一个周期是一天的滑动窗口,因为我们要每秒钟输出窗口的数据,所以我们紧接着窗口定义了一个1秒的触发器。
DataStream> dataStream = env.addSource(new MySource());
dataStream.keyBy(0).window(TumblingProcessingTimeWindows.of(Time.days(1), Time.hours(-8)))
.trigger(ContinuousProcessingTimeTrigger.of(Time.seconds(1)))
.aggregate(new MyAggregate(),new WindowResult())
.print();
自定义聚合算子
接下来我们自定义一个聚合算子来实现该功能。
对于聚合算子的理解可以参考这个文章:
https://mp.weixin.qq.com/s/ZCWexNGzhSchRpxipa1x-g
public static class MyAggregate
implements AggregateFunction,Set,Integer>{
@Override
public Set createAccumulator(){
return new HashSet<>();
}
@Override
public Set add(Tuple2 value, Set accumulator){
accumulator.add(value.f1);
return accumulator;
}
@Override
public Integer getResult(Set accumulator){
return accumulator.size();
}
@Override
public Set merge(Set a, Set b){
a.addAll(b);
return a;
}
}
处理输出结果
我们这里将结果输出到控制台,实际的生产中我们可以将数据写入redis或者hbase等。
1> Result{, dateTime='2020-06-21 19:23:30'type='IOS', uv=136}
2> Result{, dateTime='2020-06-21 19:23:30'type='Android', uv=150}
1> Result{, dateTime='2020-06-21 19:23:30'type='H5', uv=134}
1> Result{, dateTime='2020-06-21 19:23:31'type='IOS', uv=164}
2> Result{, dateTime='2020-06-21 19:23:31'type='Android', uv=177}
1> Result{, dateTime='2020-06-21 19:23:31'type='H5', uv=167}
2> Result{, dateTime='2020-06-21 19:23:32'type='Android', uv=205}
1> Result{, dateTime='2020-06-21 19:23:32'type='IOS', uv=193}
1> Result{, dateTime='2020-06-21 19:23:32'type='H5', uv=198}
关于flink中如何使用set实时计算当天网站uv问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
实时
网站
数据
算子
结果
问题
生成
输出
接下来
更多
用户
需求
帮助
统计
解答
易行
简单易行
内容
功能
周期
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
人保财险数据库项目招标
上饶方正服务器项目
学校网络安全教育宣传信息
惠州专业软件开发代理价格
软件开发维护费收多少
王强重庆软件开发
服务器装系统一半关机怎么办
闵行区上门软件开发定制报价表
腾讯的网络安全做的怎样
推动网络安全周成都
网络安全黑板报高中图片
dbtools连接数据库报错
日本科技冲村宪树数据库
幻塔班吉斯06服务器
计算机网络技术信息管理技术
网络安全管理教程视频
沈阳和研科技工作软件开发
外网登陆服务器地址
网络安全模式键鼠失灵
前端软件开发工具软件
区域管理提升服务器
当今软件开发行业
水雨情数据库
net软件开发简历范文
沂源外贸erp软件开发公司
德州迅成软件开发
王者服务器哪个好上国服
美团采用的什么网络技术
dnf截取数据库
科技民企与国企互联网巨头