开发者学堂课程【大数据实战项目 - 反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第六阶段:爬虫识别- Redis 爬虫数据备份-代码解读】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/674/detail/11719
爬虫识别- Redis 爬虫数据备份-代码解读
目录
一、回顾
二、指标碰撞实践
三、指标碰撞步骤
一、回顾
之前将数据碰撞的准备数据代码写完,数据的提取,提取后将数据转换为 Map 类型,将 Map 和数据库中配置的流程数据流程规则的阈值放到 calculateFlowsScore 方法里,最终返回样例列,如下
AntiCalculateResult
(message: ProcessedData,
ip:string,
ipBlockCounts:Int,
ipCounts:Int,
criticalPagesCounts:Int,
userAgentCounts:Int,
minTimeDiff:Int
,
lessDefaultTimes:Int
,
differentJourneysCounts:Int,
ipCookCount:Int,
flowsScore:Array[FlowScoreResult])
flowsScore:Array[FlowScoreResult])
参数没有,让碰撞方法返回此类型能计算出结果。calculateFlowsScore(dataParams,flowList)
报红,方法没有返回,要 Array 类型的数据。进行指标碰撞返回flowsScore:Array[FlowScoreResult]
类型,不报错。
二、指标碰撞实践
//1指标碰撞(碰撞)
def calculateFlowsScore(dataParams:Map[string
,Int],flowList:Arr
ayBuffer[Flowcollocation]):Unit ={
val flowScore=new ArrayBuffer
类型是[FlowScoreResult],
将 flowS
core 进行返回,报红,返回的是 Array,调用 ArrayBuffer。将 flowsS
Core 调.toArray,不报错。
val flowsScore=new ArrayBuffer[FlowscoreResult]()
flowsscore.toArray
封装 flowsScore 做返回,实际上是一层套一层。缺 flowsScore,完善 flowsScore,同时将数据做碰撞。
三、指标碰撞步骤
1、根据算法需求实例两个 ArrayBuffer
假设指标碰撞已有,输出结果是与选定与否无关得分结果集、选定的得分结果集,结果是由打分算法输入的参数进行设置,打分要什么,指标碰撞给什么,输出的数据是打分算法想要的。根据算法想要的数据设置两个 ArrayBuffer,与选定与否无关得分结果集、选定的得分结果集。
一个选定与否无关的数据分数
一个必须是选定状态的并且数据的结果大于配置的值的分数
2、遍历流程数据,获取流程内的规则
遍历流程数据是 flowList,拿到一个流程有很多数据和规则。
3、获取规则内的阈值
4、获取数据计算出的结果
拿出 Map 提出的数据
5、数据对比
数据计算的结果大于阈值,根据需求将分数写入相应的ArrayBuffer内
数据计算的结果小于阈值,根据需求填入ArrayBuffer(是否需要填写)
数据计算出的值与数据库中阈值进行对比,如果计算结果大于阈值要分数。
为了封装两个 ArrayBuffer,一个选定与否无关的数据分数,一个必须是选定状态的并且数据的结果大于配置的值的分数,两个数据最终给打分算法使用。
指标碰撞分析将数据计算的值与企业配置的阈值进行对比,为打分算法准备数据,碰撞为打分算法准备数据。
流程拿到开发工具
//1根据算法需求实例两个 ArrayBuffer
//一个选定与否无关的数据分数
//一个必须是选定状态的并且数据的结果大于配置的值的分数
//2遍历流程数据,获取流程内的规则
//3获取规则内的阈值
//4获取数据计算出的结果
//5数据对比
//数据计算的结果大于阈值,根据需求将分数写入相应的 ArrayBuffe
r内
//数据计算的结果小于阈值,根据需求填入 ArrayBuffer(是否需要填写)