开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第三阶段):数据预处理-航线类型操作类型目标与思路】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/671/detail/11652
数据预处理-航线类型操作类型目标与思路
内容介绍:
一、航线类型操作类型目标
二、航线类型操作类型实现思路
一、航线类型操作类型目标
1.概述
前面的课程中将数据拆分的流程进行了讲述,接下来学习数据的分类,也就是数据的打标签,可以分为是单程与往返以及飞行类型与操作类型。首先讲解如何进行飞行类型和操作类型的分类。
2.目的
确定一条数据的业务场景(国内查询、国际查询、国内预定、国际预定)。在数据采集的时候,第一步是采集数据,第二步是发送数据到 Kafka,采集的数据包括日期、request 以及 request method、connect type 等,但这些数据里并没有记录该数据是哪种业务场景,无法确定是国内查询还是国际查询,国内预定还是国际预定,即数据本身没有体现但是要给数据打上标签,需要根据数据里的内容判断出到底是哪种业务场景。之所以要判断业务场景的类型,是因为后续的数据解析等过程中会应用到飞行类型的数据,不对业务场景进行判断后续的功能就无法继续进行。
3.需求
在业务上,企业数据可以在操作类型维度分为“查询操作”和“预定操作”,例如南京航天航空官网首页,默认从广州到北京,点击查询,该业务场景属于查询操作。
选择日期和票价后,网页会给立即预订的按钮,点击跳转到添加乘客信息的界面,该业务场景属于预定操作。在航线类型维度可以分为国际航线和国内航线,例如从广州出发,出发地选择后到达地可以选择为国内或国际,
到达地选为亚洲的巴厘岛,点击查询,该业务场景也是查询操作,而该查询属于国际查询。在这两个维度下有四种可能,两两组合后分别是国内查询、国际查询、国内预定、国际预定。在数据采集时获得的实际数据中并没有信息表示这四种场景,然而在后续的模块中需要使用到这些信息。所以一条数据属于四种场景中的哪一种需要分析计算出来。
根据数据库中配置的规则(四种场景),与前面所解析出的url进行匹配,该 url与哪个规则匹配成功,表示该数据就是哪种规则类型的数据。
二、航线类型操作类型实现思路
1、现已经通过 DataSplit.dataSplit()方法将数据进行了拆分,获得到的数据是一个个独立的数据。RequestUrl 字段中存储着查询的 url。
2、读取数据库的 url 正则表达式(四种)到程序
3、遍历四种规则,使用 RequestUrl 中的 url 匹配四种规则,该规则在数据库里面,重复之前的流程,从数据库把规则读出,然后再把数据读出并进行匹配。判断数据是哪种操作哪种航线,并封装到对应的 RequestType 中。
4、分类数据的规则表 itcast_classify_rule
id |
flight_type |
operation_type |
expression |
1 |
0 |
0 |
^.*query.ao.*$ |
2 |
1 |
0 |
^.*ita/intl/zh/shop.*$ |
3 |
0 |
0 |
^.*postFlight.ao.*$ |
4 |
1 |
1 |
^.*/ita/intl/zh/passengers |
5 |
0 |
1 |
^.*createOrder.xsql.*$ |
6 |
1 |
1 |
^.*ita/rest/intl/b/order.*$ |
7 |
0 |
1 |
^.*getRuleFromSuccessPa |
8 |
0 |
1 |
^.*cancelOrder.*5 |
规则表如上所示,expression 列为四种业务场景的正则表达式,需求当中的四种情为 flight_type 列以及operation_type 的内容。右键选择设计表,了解各自的含义,数据中 flight_type 和 operation_type 是非零即一的。flight_type 中的0代表的是国内,1代表的是国外,operation_type 中0代表的是查询,1代表的是预定,它们四个两两组合出的结果就是国内查询、国际查询、国内预定和国际预定,例如 flight_type 和 operation_type 均是0,代表的含义是国内查询;flight_type 为1,operation_type 为0,代表的是国际查询;flight_type 和 operation_type均是1,代表队是国际预定。
操作类型中0代表查询,1代表预定;航班类型中0代表国内,1代表国外。组合类型如下表所示:
0 |
0 |
国内查询 |
0 |
1 |
国际查询 |
1 |
0 |
国内预定 |
1 |
1 |
国际预定 |
数据一条条流过的时候,前面已经把 URL 确定了,四种场景的规则也已经确定了,需求是要确定一条数据的业务场景,即确定业务场景为国内查询、国际查询、国内预定、国际预定四种情况中的哪一个。数据当中的 url 确定了,而且数据库也已经明确规定了00是国内查询,10是国际查询,现在要该规则读到程序里面,然后用 url 去与四种情况相匹配,实现思路即匹配出 url,然后去正则四种情况,匹配上哪个就是哪个场景,以上就是数据分类的需求以及实现的大概思路。