开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop框架搭建):数据预处理-链路统计-activeUserCount计算】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/670/detail/11633
数据预处理-链路统计-activeUserCount计算
内容介绍:
一、链路统计功能的目标
二、思路与关键代码
三、当前活跃连接的计算
一、链路统计功能的目标
目标:
企业需要实时了解每个链路的运行情况、数据采集量、活跃链接数等信息。
需在数据在采集时实时展现相关的信息在前台界面,管理界面。
二、思路与关键代码
1、统计每个批次每台服务器访问的总量
获取到一条数据,使用”#CS#"对数据进行切割,
获取切分后的第十个数据(角标是9), 将第十个数据和1,进行输出
调用 reducebykey (下划线+下划线)求去除这个批次每台服务器的放总量
2、统计每个批次每台服务器当前活跃链接数的量
获取到一条数据,使用”#CS#”对数据进行切割,
获取切分后的第十二个数据(角标是11)和第十个数据(角标是9).
将第十个数据和第十二个数据,进行输出。
调用 reducebykey ((k,v)=>v) 求去每个服务器多个数据中的最后一个数据。
3.将两批数据写入 redis
在两个数据不为空的前体现,将两个数据转换成两个小的 map
封装最终要写入 redis 的数据(将两个小的 MAP 封装成-个大的 MAP)
在配置文件中读取出数据 key 的前缀,+时间戳(redis 中对数据的 key)
在配置文件中读取出数据的有效存储时间
将数据写入 redis
三、当前活跃连接的计算
//当前活跃连接数的计算
//1获取到一条数据, 使用“#CS#” 对数据进行切割
Val activeUserCount=
rdd. map(message=>{
var ip =
var activeUserCount=""
//切分数据
if (message.split( regex = "#CS#") . length>11){
//2获取切分后的第十二 个数据(角标是11)和第十个数据(角标是9)
//截取当前活跃连接数
activeUserCount-message .split( regex = "#CS#")(11)
//截取 IP
ip=message. split( regex= "#CS#")(9)
//3将第十个数据和第十二个数据,进行输出
(ip,activeuserCount)
}).reduceByKey(k,V)=>
v)
//输出最后一个数据
计算完 activeUserNumber和server_ip n ,
下一步就是写入 redis。服务器的IP与访问的次数有了,只要有了时间戳就可以写入 redis。