数据预处理—数据清洗—数据过滤功能代码|学习笔记

简介: 快速学习数据预处理—数据清洗—数据过滤功能代码

开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第三阶段数据预处理—数据清洗—数据过滤功能代码】学习笔记,与课程紧密联系,让用户快速学习知识。

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


数据预处理—数据清理—数据过滤功能代码


前面已经将规则读取过了,并且已经将其添加到广播变量里面,而且数据也已经获得。数据、规则都已经获得,接下来要观察数据,看流程已经进行到哪个部分,若不需要更新,则就直接过滤。若需要更新,则按更新的流程进行。


一、数据清洗过滤代码

接下来进行数据清洗。流程是先定义一个方法,然后开始做数据的清洗,这里先对方法进行命名,即命名为 URLFilter.filterURL,将其复制粘贴过来,这就是数据定义的方法,此方法用来调用,实际上就是在这里进行数据过滤,但是由于流程的最后一步,需要调用 RDD 的 filter 进行数据的过滤。如何将其过滤掉,如果选择删除,没有 delete 的操作,但这里是 rdd 中提供了数据过滤的方法。输入 rdd.filter,在 filter 存在一条条数据,如果在数据返回处就保留,false 就选择删除这样的方法。而此方法里,调用数据过滤,然后在 URLFilter.filterURL 方法里,把此方法返回处和 false 选择就可以完成。所以先把 URL 的 RDD 的filter方法补全,这里出来的是每一条数据 message,用 message 来调用这个方法,把 filterURL 方法直接放在 message 后方,通过 filter 获得每一条数据,把每一条数据传给此方法。除了此方法之外,在数据传输进去之后,应该按照什么规则来进行过滤?或者进行匹配?这里可以得知规则在广播变量里,因为前面已经将其放到广播变量里,拿到广播变量数据后,粘贴到下方,这是广播变量,这里需要拿到广播变量里的数据,需要调用.value,value 才是真正的数据,这个就是数据过滤的方法。

//2 数据清洗功能

//定义方法,参数为一条数据和广播变量

rdd.filter(message=>URLFilter.filterURL(message,broadcastFilterRuleList.value))

在数据过滤里面这个方法还没有,代码下加了一条横线,因为现在此方法没有且 filter 要求反复的 ture 和 false 也没有,所以其显示报错。现在先创建 url 的filterobject,依然到数据预处理中的业务处理里面,右键新建 Scala Object给它起个名字叫做 urlfilter。然后进行用于数据过滤(过滤无用的数据),此时先来引入,引入后urlfilter 就没有了。接下来让其来创建一下,将三个问号删掉,把大括号补全,这就是实现数据的过滤功能。

//用于数据过滤(过滤无用的数据)

object URLFilter {

//实现数据的过滤功能

def filterURL(message:String,value:ArrayBuffer[string]):Boolea={

此时它默认需要返回布尔类型,因为前面需要一个布尔类型,将方法创建出来后,这里面返回了一个布尔类型,证明该方法可行。调用 filter 方法的一条数据,将这条数据和广播变量传进去,此时去返回处和 false 即可。

接下来写代码,可知 message 数据没有问题,value 不太好,value的值是过滤规则,即 FilterRuleList 过滤规则的历史,粘贴并换个名字。该代码实现的逻辑先后顺序如何过滤,可知定义方法已经具备,接下来截取出数据当中的 url,ctrlc 在上述代码中。然后遍历数据过滤的规则,拿 url 与过滤规则进行匹配,这是第二步;第三步是若匹配成功,返回 false,若匹配不成功,即返回 ture;下一步调用返回;最后一步调用 filter,实际上在这里面已经调用了它,rdd.filter 去执行代码。

接下来写该代码,可知现在写代码处显示标红,因为它要求返回布尔类型,而现在这里面什么都没有。所以,先给出布尔类型的数据,做一个标记即 val save 保留,因为这里过滤数据,那就先给出保留的数据,将它命名成 true ,因为这里面默认所有的数据都是需要保留的,所以将其写成 ture,再返回即可。

//默认所有的数据都是需要保留的

val save=true

接下来需要匹配,如果匹配成功,需要将保留改成 false 即可。现在一条数据的 message 格式为下图所列,数据井 CS 井的形式。需要过滤出 Url,其在 request 里面,所以要将 url 的 request 使用井 CS 井截取出来。

image.png

书写代码截取出数据当中的 url,先进行判断,这里的 url 也就是 request 它所在的位置是数据当中的第一个、第二个数据,第二个数据下脚标是1。对第二个数据进行判断,if(message.split使用井 CS 井进行拆分,如果拆分完以后,.length 它的长度大于一即二,而这个数据恰好是第二个数据,如果它大于一,那么就返回用它进行切分完后下脚标是一的数据。否则 else 返回为空,前面再做一个接收,即 “val Request”其中 request 相当于请求的数据,其包含了 url。

完整代码为:

//截取出数据中的 url

val request=if(message.split( regex=“#CS#").length>1)

message.split( regex = “#CS#")(1) else "

以上就是截取出来的数据。接下来是遍历数据过滤的规则,规则即为“FilterRuleList”便利它,用 request 与规则去进行匹配来遍历规ze,实际上 url 在其中。此时代码书写为 for(rule<-FilterRuleList),遍历规则需要使用箭头,这里面就是其中的一个规则,然后用 request.match(rule)。如果 match 算了,If 进行判断,如果 match 成功了,表示数据需要删除,即把 save 改成 false,将标记改为 false。代码“val save=true”里面的红线将其改为var即可。改成 false 后,就相当于数据和任意一个(这里都是遍历,有六个或者十几个,一个一个的便历)有任何一个匹配上了,它都表示需要删除,改成 false。改后即代码写完了,因为若匹配不成功,表示不需要返回 ture,但默认就是 ture。

数据过滤完整代码:

//用于数据过滤(过滤无用的数据)

object URLFilter {

//实现数据的过滤功能

deffilterURL(message:String,FilterRuleList:ArrayBuffer[string]):Boolean={

//默认所有的数据都是需要保留的

var save=true

//截取出数据中的 url

val request=if(message.split(regex="#CS#").length>1)

message.split(regex=“#CS#")(1) else””

//遍历数据过滤的规则,拿 request 与过滤规则进行匹配

for(rule<-FilterRuleList){

//若匹配成功表示,需要删除,返回 false

if(request.matches(rule)){

//将标记改为 false

save=false

}

//若匹配不成功表示,表示不需要删除,返回 true

save

}

实现完了后,前面数据进行接收,再将其做一个输出。接收:val 一个变量叫做 Filterdata 过滤后的数据,将这个数据进行输出,再.for each(print line)即可输出。

完整代码为:

//2 数据清洗功能

//定义方法,参数为一条数据和广播变量

val

filteredData=rddfilter(message=>URLFilter.filterURL(message,broadcastFilterRuleList.value filteredData.foreach(println)

以上就是数据清洗过滤代码的过程。

相关文章
|
24天前
|
数据采集 数据挖掘 数据处理
进行数据清洗的过程通常包括以下步骤
【4月更文挑战第3天】进行数据清洗的过程通常包括以下步骤
21 3
|
3月前
|
数据采集 数据可视化 数据挖掘
数据清洗有什么方式
数据清洗有什么方式
|
25天前
|
数据采集 监控 数据挖掘
提高数据清洗效果的关键
【4月更文挑战第2天】提高数据清洗效果的关键
9 2
|
1月前
|
数据采集 Python
数据清洗是数据预处理的重要步骤
数据清洗是数据预处理的重要步骤
19 0
|
2月前
|
数据采集 数据可视化 数据挖掘
使用Python实现高效的数据清洗和预处理
数据清洗和预处理是数据分析和挖掘中必不可少的步骤。然而,由于数据来源复杂多样,常常存在缺失、异常、重复等问题,传统的手动处理方式效率低下。本文介绍了如何使用Python编程语言实现高效的数据清洗和预处理,帮助数据分析师和开发者更快速地完成数据处理工作。
|
2月前
|
数据采集 JSON 数据挖掘
利用Python实现自动化数据清洗和转换
数据清洗和转换是数据分析的重要步骤。在数据分析工作中,我们常常需要处理不规范、重复、缺失或错误的数据。本文介绍如何使用Python编程语言实现自动化数据清洗和转换,为数据分析工作提供高效的支持。
|
数据可视化 数据挖掘 数据处理
【数据篇】33 # 可视化数据处理的一般方法是什么?
【数据篇】33 # 可视化数据处理的一般方法是什么?
202 0
【数据篇】33 # 可视化数据处理的一般方法是什么?
|
数据采集 SQL 数据挖掘
数据预处理-数据解析-总结及预定数据分析|学习笔记
快速学习数据预处理-数据解析-总结及预定数据分析
117 0
数据预处理-数据解析-总结及预定数据分析|学习笔记
|
数据采集 消息中间件 大数据
数据预处理-数据脱敏总结|学习笔记
快速学习数据预处理-数据脱敏总结
245 0
|
数据采集 分布式计算 NoSQL
数据预处理—数据清洗—规则更新流程代码|学习笔记
快速学习数据预处理—数据清洗—规则更新流程代码
202 0
数据预处理—数据清洗—规则更新流程代码|学习笔记