数据预处理-航线类型操作类型-逻辑判断实现|学习笔记

简介: 快速学习数据预处理-航线类型操作类型-逻辑判断实现

开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第三阶段数据预处理-航线类型操作类型-逻辑判断实现】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/671/detail/11656


数据预处理-航线类型操作类型-逻辑判断实现


内容介绍:

一、概述

二、打标签的具体思路


一、概述

更新规则已经学习,接下来开始实现真正的打标签动作,现在数据、url 以及四个业务场景的规则都存在了,接下来就开始实现打标签动作,确定思路。


二、打标签的具体思路

1.定义方法,参数为经过拆分后的 URL 和分类的广播变量

首先要定义一个方法,然后把 url 和分类的广播变量传进去,方法的具体名称可以从讲义中拷贝过来:RequestTypeClassifier.classifyByRequest,程序中目前还没有这个方法,因此会显示报错,需要在数据预处理的businessprocess 里右键新建一个叫 packageobject,Name 即为 RequestTypeClassifier,用于实现数据分类的代码编写,此时返回可以看到程序中该方法就不会报错了。classifyByRequest 这个方法还没有,会显示报错,稍后进行该方法的创建。首先将 url 传入,如何判断数据到底是哪个业务场景,可以用 url 去匹配四个业务规则,url 拿到后再把前面广播变量里面的数据拿到,在广播变量后(broadcastRuleMaps)输入.value,.value 才是真正的数据,数据url 和规则都有了后,接下来进行方法代码的编写。

2.进入 classifyByRequest 里面创建方法,主用来实现航线航线和操作类型的标签

将?删掉并补全{}的内容,requesturl 已经存在了,规则 value 修改为 RuleMaps,把规则拿出来对应随堂笔记当中:先在分类的广播变量中获取四种业务场景的规则,获取出来以后遍历四个规则去进行匹配,匹配完以后再最终返回类型这一部分的流程。

第一步:把数据的规则都读取出来,规则分为四种,分别是:国内查询的规则、国际查询的规则、国内预定的规则、国际预定的规则,四个规则分别进行接收,分别创建变量,国内查询为:val nqRuleList=RuleMaps.get("key"),key的名字叫做 nqRuleList,因为 nqRuleList 作为 key 写进的,也应该以该名称读出来,代码为:val nqRuleList=RuleMaps.get("nqRuleList");同理,

国际查询的名字为 iqRuleList(international query),代码为:val iqRuleList=RuleMaps.get("iqRuleList");

国内预定的名称为 nbRuleList(national book),代码为:val nbRuleList=RuleMaps.get("nbRuleList");

国际预定为 ibRuleList(international book),代码为:val ibRuleList=RuleMaps.get("ibRuleList")

第二步:在 Map 里边把四种业务查询的规则读取完成之后,接下来做第二件事情,遍历四种情况的规则与数据进行匹配,分别完成遍历国内查询规则、国际查询规则、国内预定规则、国际预定规则。先拿到规则,这里规则已经存在了,输入:for(nqRule<-nqRuleList){}后去做判断。如果数据match到其中一个规则(代码为:if (requesturi.matches(nqRule)))。

  • 遍历国内查询规则

任何一个数据匹配到国内查询,就表明该数据是国内查询业务,该 url 就是国内查询。说明:使用数据匹配国内查询的规则,若匹配成功,表示该 URL 所在的数据就是国内查询。即 url 确定后,用 URL 匹配到里面的任何一个规则,就可以确定 url 的业务场景,确定以后就可以去实现具体的返回类型。bin 里面的 processdata 有专门的标记用来表示是国内查询还是国际查询,双击并打开最后的 request type,request type 分为 flight type 和 behaviour type,分别表示 flight type 和 behaviour type 的枚举,flight type 代表了国内和国际,behaviour type 代表了查询和预定。首先需要实现 flight type,复制粘贴到程序里面,粘贴时需要引入,否则会报错。数据匹配上(national query)国内查询的规则后,就表示该数据是国内查询,而国内查询具有 flight type 的枚举,可以直接调用 flight type 枚举,然后将 behaviour type 的枚举引进来,代码为:RequestType(FlightTypeEnum.National,BehaviorTypeEnum. Query)

表示数据匹配上的规则是 national query,匹配后完成了反馈。现在数据确定为国内查询,还需要在前面定义一个变量,把数据返回。

定义返回的类型,代码为:

var requestType :requestType=null

并用它进行接收,先将其设置为 null 空,然后进行匹配,匹配后的结果是国内查询就会返回给它,而它就有了数据,最终再把它进行返回即可,返回最终的数据就是 requestType。现可以断定数据的业务类型,是国内的查询。遍历国内查询的完整代码为:

for(nqRule<-nqRuleList){

if (requestur1.matches(nqRule)){

requestType=RequestType(FlightTypeEnum.NationaL,BehaviorTypeEnum.Query)

}

}

  • 遍历国际查询规则

对于国际查询实现思路是一样的,这需要进行小部分改动即可,完整代码为:

for(iqRule<- iqRuleList){

if (requestur1.matches(iqRule)){

requestType=RequestType(FlightTypeEnum.InternationaL,

BehaviorTypeEnum.Query)

}

如果数据匹配国际查询的规则成功,就代表数据为 international query 业务场景。

  • 遍历国内预定规则

用 url 与多个规则匹配,与国内预定匹配成功后表示该 url 为国内预定。完整代码为:

for(nbRule<-nbRuleList){

if (requestur1.matches(nbRule)){

requestType=RequestType(FlightTypeEnum.NationaL,BehaviorTypeEnum.Book)

}

}

用数据去国际预定的规则,如果匹配成功就表示数据为国际预定。完整代码为:

for(ibRule<-ibRuleList){

if (requestur1.matches(ibRule)){

requestType=RequestType(FlightTypeEnum.NationaL,BehaviorTypeEnum.Book)

}

}

3.程序的完善:增加守护进程,true 表示继续执行

至此代码已经写入完毕,但还不完善,并不健壮。因为某些数据完成第一个判断后,就可以确定是国内查询了,没有必要进行后续的判断了,因为一条数据只能属于一个业务规则,假设已经确定为国内查询,不需要进行后续的三个循环,这时需要加一个守护进程,定义一个 var 可变数据类型 flag,使其等于 true,在 for 循环里面添加判断语句,如果 flag 等于 true 就继续执行,第一次为 true,如果匹配上了,就把 flag 改成 false,每个循环都要增添一个守护进程,咨询flag是否继续执行,true表示继续执行,false表示不再执行。如果第一个匹配成功,就让后者不执行,就让flag=false,如果为 false 则后面的 for 循环就不在执行,这样就能够实现所需的效果,如果第一个没匹配成功,flag 仍是 true,如果第二个循环匹配成功,就改为 false。还有一种情况,数据不属于这四种情况,数据没有匹配上任意一个规则,flag 仍为 true,就表示它没有匹配上任何一个规则,flight type 和 behaviour type 均属于 other。至此打标签属于国际查询、国际查询、国内预定还是国际预定的代码就已经写入完毕了。

相关文章
|
29天前
|
数据采集 数据挖掘 数据处理
数据清洗的主要步骤包括**理解数据、处理重复值、处理空缺值、处理异常值、数据标准化和数据收集
【4月更文挑战第3天】数据清洗的主要步骤包括**理解数据、处理重复值、处理空缺值、处理异常值、数据标准化和数据收集
26 2
|
7天前
|
测试技术
数据分享|R语言回归,虚拟变量和交互项,假设检验:F检验、AIC和 BIC分析学生成绩数据附自测题(下)
数据分享|R语言回归,虚拟变量和交互项,假设检验:F检验、AIC和 BIC分析学生成绩数据附自测题
13 0
|
7天前
|
机器学习/深度学习 数据可视化
数据分享|R语言回归,虚拟变量和交互项,假设检验:F检验、AIC和 BIC分析学生成绩数据附自测题(上)
R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析
12 0
|
16天前
stata对包含协变量的模型进行缺失值多重插补分析
stata对包含协变量的模型进行缺失值多重插补分析
26 3
|
2月前
静态时序分析:工艺库的特征化条件和工作条件
静态时序分析:工艺库的特征化条件和工作条件
15 0
|
4月前
|
算法 搜索推荐 数据挖掘
图计算中的图算法有哪些常见的类型?请举例说明每种类型的算法。
图计算中的图算法有哪些常见的类型?请举例说明每种类型的算法。
38 0
|
10月前
|
数据库
机房重构—在应使用条件的上下文(在 ‘where‘ 附近)中指定了非布尔类型的表达式
在应使用条件的上下文(在 ‘where‘ 附近)中指定了非布尔类型的表达式
|
10月前
|
数据采集 机器学习/深度学习 自然语言处理
实现文本数据数值化、方便后续进行回归分析等目的,需要对文本数据进行多标签分类和关系抽取
实现文本数据数值化、方便后续进行回归分析等目的,需要对文本数据进行多标签分类和关系抽取
147 0
|
数据可视化
【数据篇】34 # 如何处理多元变量?
【数据篇】34 # 如何处理多元变量?
130 0
【数据篇】34 # 如何处理多元变量?
|
网络协议
复合循环指令编程及加工
复合循环指令编程及加工
复合循环指令编程及加工