数据预处理-数据解析-需求与思路|学习笔记

简介: 快速学习数据预处理-数据解析-需求与思路

开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第三阶段数据预处理-数据解析-需求与思路】学习笔记,与课程紧密联系,让用户快速学习知识。

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


数据预处理-数据解析-需求与思路


内容介绍:

一、数据解析的需求

二、解析规则与思路


一、数据解析的需求

已经打完了单程还是往返的标签同时也看到了效果。接下来看下面的宏观流程,接下来要实现的目标叫做数据解析。

image.png

数据解析分为两种情况:查询类的数据解析,预定类的数据解析。在数据当中,企业的业务场景当中,数据会分为两种业务场景,一个是查询类的,一个是预定类的。

那么要做的第一件事情就是查询类的数据解析。

查询类的数据解析到底要做什么事?

解析查询类的数据的目标是来实现解析出数据当中出现的出发地、目的地、起飞时间,以及其他的信息,也就说最主要的目的就是为了解析这些数据,把它们解析出来。

这部分稍微有些复杂,因为采集的数据当中是没有出发地、目的地、起飞时间的,或者说有但是不能够通过原始数据一步解析出来。

需求:

截止到目前为止,已经对每一条数据进行了分类,计算出了它的标签,这些标签里面包括国内查询、国际查询、国内预定、国际预定,还有单程跟往返,这些已经计算好了,在解析数据里面我们会用到它们。

每一个不同的分类,也就是说国内查询、国际查询、国内预定和国际预定。

这是四种情况,那么不同的分类,它的请求参数的格式是不一样的。也就说解析这四种情况的出发地和目的地,它的解析参数是不一样的。那么同样,四种不听的业务场景解析数据的参数也是不一样的。

那么这些参数放在哪儿?

它们放在数据库中,四种情况分别有一个解析规则来一一去对应。

参数的配置放到了外部项目当中。

image.png

看上图所示页面,数据管理里有一个数据处理的页面,上面有国际国内查询,国际和国内的预定。

然后在这里面要解析出发地和目的地。

以南方航空为例,现在默认是广州到成都。8月15出发,9月15返回,这两个是日期。

image.png

日期选好以后来监控一下它的参数,点击查询,看下图,在网络流量当中,查询 Query,然后看到里面的参数有一个 depcity, 一个 arrcity 还有一个 flightdate 。

image.png

depcity 的就是出发地,arrcity 就是目的地,flightDate 是起飞日期,这就是要监控的数据,这些数据都在参数里面也就是 Body 里面。请求头里面是没有这些数据的。

要把它解析出来就要知道数据的 body 信息。那么数据的 body 有哪些?要去哪里又该怎么去解析?

image.png

看上图页面,业务场景分为查询类和预定类。而查询又分为国内查询和国际查询。预定又分为国内预定和国际预定。

image.png

目的是为了解析说出发地、目的地、起飞时间。也就是图中显示的 depCity、arrCity、flightDate,但是不能直接解析出来。

因为国内查询用的是 depCity、arrCity、flightDate 来标记出发地,目的地和起飞时间。

image.png

但是在国际查询,出发地是 dep ,目的地是 arr。起飞时间是 date  ,这和国内查询完全不一样。同样国内和国际预定里面的出发地,目的地和起飞时间也是完全不一样的,也就是数据采集完之后可以拿到数据当中的 body 信息。但是拿到信息以后该怎么解析?

所以这个界面存在的意义就是明确的告诉我们,如果数据是国内查询的业务场景,那么针对每一条数据它会把你的飞行类型和操作类型打出来了。就是上面的四种情况,要知道具体的业务场景,然后再去找这个业务场景对应的解析规则。

解析出发地目的地起飞时间以及乘机人数是最终的目的,但不能一步到位,所以需要先找到业务场景。

image.png

再去确定该用哪一个解析规则。如果数据直接传过来,它可能有很多种解析方法,那么在多种的情况下就不能够解析出来。所以必须确定是哪一种情况。

先确定业务场景,再根据 url 的表达式以及其他的一些参数确定该用哪个来解析,这个就是需求,也是数据解析的最终目的。


二、解析规则与思路

需要从数据库当中读取出解析规则,根据数据打上的标签,就是国内查询、国际查询、国内预定跟国际预定,根据前面的标签,找到规则,再去解析里面的数据。这就是这个界面存在的意义。这里面是一个配置,它落到数据库里面,打开 analyzerule 这个表:image.png

这个表里有很多字段,它们就是这个界面所存出来的结果,其中 BehaviorType 用来区分查询跟预定。

package com.air.antispider.stream.dataprocess.constants

//操作标记类别0-查询,1-预定,-1-其他

object BehaviorTypeEnum extends Enumeration{

type BehaviorTypeEnum = Value

val Query = Value(0,"Query")

val Book = value(1,"Book")

val Other = value(-1, "Other")}

这个数据表,从后往前会发现有很多的 Query ,这些都是查询的指标数据。

image.png

再往前看,直到看到预定的字段 book 。

image.png

上面的这些就是查询的相关指标的参数和预定的相关指标的参数。那么,查询跟预定前面的这些比如 flight_type,behavior_type 等是干什么的?

image.png

先看查询,先在查询类的业务场景当中,找到 query,这里有很多种情况。第三行是国内查询,第二行是国际查询,还有第四行的 c1,c2,d1。

image.png

也就是如果传过了一条数据,它是查询性的业务场景,那么要查询出发地和目的地,起飞时间这三个参数,以这三个为例,那么应该以那个为准。上图的表格能看到出发地和目的地,起飞时间都有三种选择,那么到底以哪个为准?按谁去解析?这时候就用到了前面的 flight_type,behavior_type,requestMatchExperssion 这些指标。

通过多个属性联合到一起确定出到底该用哪一个数据进行解析。

比如这里面的飞行类型 Flight_type,在 Flight_type 里,0代表国内,1代表国际。Behavior_type 的0代表查询,1代表预定。所以上表中第二三四行他们三个之间,如果进行国内查询,那么就从三种选择变成了两种选择。所以后面这几个属性的目的,都是为了确定,当有多个选择的情况确定出到底该用哪一个。这些前面的属性就是为了要确定这件事情。这件事情就是在数据库当中,数据管理界面当中的这些属性都存储在数据库中,也就是这张表。

下面在book解析的时候,他也有 book_idType,book_idCard 两种选择

image.png

那这两种选择该用哪一个?这也要用前面的这些属性来确定,如果是预定的业务场景,比如下图中的这个例子:

image.png

在预定的场景中,第一个跟第五个该用哪一个?就是通过前面这些属性来进行确定。

image.png

上面的就是解析数据的规则以及思路。

相关文章
|
2天前
|
SQL 分布式计算 监控
Sqoop数据迁移工具使用与优化技巧:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入解析Sqoop的使用、优化及面试策略。内容涵盖Sqoop基础,包括安装配置、命令行操作、与Hadoop生态集成和连接器配置。讨论数据迁移优化技巧,如数据切分、压缩编码、转换过滤及性能监控。此外,还涉及面试中对Sqoop与其他ETL工具的对比、实际项目挑战及未来发展趋势的讨论。通过代码示例展示了从MySQL到HDFS的数据迁移。本文旨在帮助读者在面试中展现Sqoop技术实力。
73 2
|
2天前
|
Python
选择和过滤数据DataFrame信息案例解析
该文介绍了如何使用pandas处理DataFrame数据。首先,通过创建字典并调用pd.DataFrame()函数转换为DataFrame。接着展示了使用loc[]选择年龄大于30的记录,iloc[]选取特定位置行,以及query()根据字符串表达式筛选(年龄大于30且城市为北京)数据的方法。
67 1
|
2天前
|
JSON 前端开发 Java
Json格式数据解析
Json格式数据解析
|
2天前
|
存储 JSON 数据格式
LuaJIT编写的解析十六进制数据
LuaJIT编写的解析十六进制数据
21 1
|
2天前
|
安全 Java 数据库连接
jdbc解析excel文件,批量插入数据至库中
jdbc解析excel文件,批量插入数据至库中
21 0
|
2天前
|
自然语言处理 数据可视化 数据挖掘
带你飞上云端,轻松解析数据——gopup库详细解析--包含安装库教程
本文介绍了Python库gopup,它是一个用于轻松爬取互联网数据的工具,简化了数据收集和处理的过程。文章提供了gopup的安装教程,特别强调了安装时需注意setuptools版本,并给出了PyCharm和命令行两种安装方法。gopup库能获取包括指数、百度和谷歌数据等多种类型的数据。文中还展示了如何使用gopup获取微博指数和豆瓣新片榜数据,并通过代码示例呈现数据和图表。此外,文章提醒了使用时的风险和部分接口的失效情况,并提供了库文档链接以供深入学习。gopup库适用于数据可视化和数据分析,是进行文本挖掘和自然语言处理项目的理想工具。
带你飞上云端,轻松解析数据——gopup库详细解析--包含安装库教程
|
2天前
|
存储 JSON 数据处理
从JSON数据到Pandas DataFrame:如何解析出所需字段
从JSON数据到Pandas DataFrame:如何解析出所需字段
14 1
|
2天前
|
存储 缓存 Linux
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
本文介绍了Xenomai中的XDDP(Xenomai Distributed Data Protocol)通信机制,XDDP用于实时和非实时进程之间的数据交换。XDDP在Xenomai内核中涉及的数据结构和管理方式,以及创建XDDP通道后的实时端和非实时端连接过程。
22 0
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
|
2天前
|
XML 存储 开发框架
c#教你网站数据轻松解析抓取,HtmlAgilityPack解析的奇妙之处
c#教你网站数据轻松解析抓取,HtmlAgilityPack解析的奇妙之处
11 0
|
2天前
|
JSON 安全 前端开发
解析FormData格式数据:Python实践指南
解析FormData格式数据:Python实践指南
15 1

推荐镜像

更多