离线计算-数据预处理(指标计算前)|学习笔记

简介: 快速学习离线计算-数据预处理(指标计算前)

开发者学堂课程【大数据实战项目 - 反爬虫系统(Lua+Spark+Redis+Hadoop框架搭建)第七阶段离线计算-数据预处理(指标计算前)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/675/detail/11739


离线计算-数据预处理(指标计算前)


内容简介:

一、表 request 中将所有黑名单数据读取出来

二、查询转换率必须的字段和注册成 TransforRateNeeded 表

三、打阶段标签(自定函数)

四、FlowID 不为空时对应为爬虫

五、代码准备完后,整体运作


一、表request中将所有黑名单爬虫数据读取出来

(1)、读取黑名单数据(包含非爬虫数据)

代码

Val AddSpiderIag=sqlContext.sql(sqlText.sql=”select*from request left outer join SpiderIP where request remoteAddr=”SpiderIP,remoteAddr”

因为数据表中还有一批数据是黑名单,所以要将其剔除。

要在数据当中过滤出所有黑名单的数据,把不是爬虫的都过滤掉。

原始数据是包含黑名单的数据,爬虫已经了两张表,所以两相对比以下就可以将数据提取出来。

最后的 sql 语句已经写好了,那执行最后一句 select 的*from request,查询所有的数据在这个表,这个就是通过离线预处理处理完以后的数据直接写到 HDFS,这些数据也就是我们流程当中经4步骤处理完的顺序写的 Kafka,5-1步骤中读过来的数据直接写到 HDFS 去,这批数据里面包含爬虫,也包含非爬虫那接下来要把所有的分爬虫剔除掉。

(2)、去除筛选出来的黑名单数据中的非爬虫数据

where 这个 request 的 remoteAddr 等于 spider ,等于 remoteAddrspider 里有 remoteAddr,spider 识别出来的 spider 上的IP,而这里也有一个 remoteAddr,当 remoteAddr 数据相等的时候,这个数据就爬虫,而要找它相等的,那就相当于把所有的爬虫数据全部都过滤出来了

到这里面以后我们处理完的结果就是返回的结果,就是所有的爬虫数据。而预处理以后的那些不是爬虫的数据就都过滤掉了


二、查询转换率必须的字段和注册成TransforRateNeeded表

(1)、查询转换率

查询转化率,必须字段查询转换的时候,我们大约有21个字段,但这21个字段不是所有的字我们都能用得上,不是所有的资料我们都有需要,大家查询的数据,就是查询转化,我们要支撑这些报表,需要用到哪些字段呢?

实际上用到的字段只有六个,分别为:requestJSESSIONID、Stagetape、FlowID、traveType、flightType

(2)、注册成TransforRateNeeded表

必须的字段注册成了一张表,字段少了,从21个变成6个,但是函数没少

然后查询还是前面的这个查询21个字段,又用这21个字段把时间查出来,时间查出来以后,我把时间T进行了替换,时间就有了,也就是这个数据里面的时间抽取出来,然后去进行一个截取,就是这个 valueOf,把它转化成了这个时间,先处理好,后面我们需要使用。


三、打阶段标签(自定函数)

代码

sqlContext.udf.register(name=”Stage”,(request:String)=>{

if (request.matches(regex=”^,*/bookingnew/.*$”)//预定,商城

|| request.matches(regex=”^.*/bookingGroup/.*$”)

||request.matches(regex=”^.*/ita?int1/zh/shop/.*$”)){

“1”

{else if (request.matches(regex=”^.*/modules/permissionnew/.*$”)//乘客信息

||request.matches(regex=”^.*/ita/int1/zh/permissionnew/.*$”)){

//支付

3

}else{

//其他,查询等操作

“0”

}

标签实际上是一个自定义函数,它的参数是旅客,我们前面把旅客自查出来6个字里面第1个就是 request,然后我们传输 request,并且进行判断,检测客户的路径UIL与设置的任意一个条件是否能匹配上,能,就返回一个1,如果和下面两个条件能匹配的上,那我就返回一个2,如果之后的条件匹配上了,我就返回一个3,否则我就返回个0

也就是0123返回这个值。1代表进入商城,2代表乘客信息,3代表支付,0代表其他。

三个流程不断深入,引导客户完成界面操作。


四、FlowID不为空时对应为爬虫(第二个udf函数)

代码

sqlContext.udf.register(name=”Spider”,(FlowID:string)=>{if(FlowID==nu11||”nu11”.equalsIgnoreCase(FlowID)){//非爬虫”0”}else{//爬虫”1”}

判断数据是不是爬虫,传入 flowID,流程 ID,如果它等于或者是等于这个字符串,那么就表示他不是爬虫,如否则,也就是只要它里面有数据它就虫。


五、代码准备完后,整体运作

代码

Val request1=sqlContext.sql(sqlText=”select request,JSESSIONID,Stage(request)as StageTag,Spider(FlowID) as Spoder”flightType,trave1Type from TransformRateNeeded”)

//request1.show(20)

//从表TranformRateNeeded中过滤掉SEESSIONID为空的数据Val request1 transformed=request1,filter(request1(“JSESSIONID”),contains(“NULL”))

写入一段 sql 函数,执行上面写道的两个udf自定义函数,以及飞行利用查询率找到的六个字段组成的TranformRateNeeded 表格。

相关文章
|
6月前
|
前端开发 数据可视化 算法
r语言Bootstrap自助法重采样构建统计量T抽样分布近似值可视化|代码分享
r语言Bootstrap自助法重采样构建统计量T抽样分布近似值可视化|代码分享
|
6月前
|
数据可视化
R语言时间序列数据指数平滑法分析交互式动态可视化
R语言时间序列数据指数平滑法分析交互式动态可视化
|
数据采集 数据可视化 数据挖掘
数据抽样技术全面概述
抽样是研究和数据收集中不可或缺的方法,能够从更大数据中获得有意义的见解并做出明智的决定的子集。
430 2
|
6月前
|
SQL 存储 分布式计算
【推荐系统】离线增量文章画像计算(二)
【推荐系统】离线增量文章画像计算(二)
89 0
|
机器学习/深度学习 算法 数据可视化
数据归一化:优化数据处理的必备技巧
数据归一化:优化数据处理的必备技巧
|
数据挖掘
怎么理解数据分析、维度和指标?
怎么理解数据分析、维度和指标?
|
数据处理 计算机视觉
计算时间序列周期的三种方法
周期是数据中出现重复模式所需的时间长度。更具体地说,它是模式的一个完整周期的持续时间。在这篇文章中,将介绍计算时间序列周期的三种不同方法。
305 0
计算时间序列周期的三种方法
|
数据采集 消息中间件 JSON
数据预处理-系统监控-创建计算方法及监控实现思路|学习笔记
快速学习数据预处理-系统监控-创建计算方法及监控实现思路
165 0
数据预处理-系统监控-创建计算方法及监控实现思路|学习笔记
|
数据采集 消息中间件 分布式计算
数据预处理-链路统计-serverCoverCount计算|学习笔记
快速学习数据预处理-链路统计-serverCoverCount计算
数据预处理-链路统计-serverCoverCount计算|学习笔记
|
数据采集 消息中间件 监控
数据预处理-链路统计实现思路|学习笔记
快速学习数据预处理-链路统计实现思路
数据预处理-链路统计实现思路|学习笔记
下一篇
无影云桌面