数据预处理-数据清洗-效果与总结|学习笔记

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习数据预处理-数据清洗-效果与总结

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

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


数据预处理-数据清洗-效果与总结


内容介绍:

一、数据过滤的过滤方法-filterURL

二、关键代码补充


一、数据过滤的过滤方法-filterURL

实际的效果:

先把过滤规则,如果最关键的代码匹配上了,就把它改成 false,就过滤掉了,先把这个代码给注释掉,也也就是说如果匹配上了也没有任何操作,这个 save 永远都是 true,那就是所有的数据都会被打出来,没有做过滤,现在把它注释掉,看到的效果应该是没有过滤,什么数据都能打出来。然后打开做一个过滤的操作,右键执行数据的数据预处理,这里面会走到脱敏的过程来。

程序跑起来了,也没有报错,接下来把爬虫跑起来,右键执行爬虫。

好多数据都刷过来了,然后把爬虫停掉,这个是现在还没过滤的效果。数据是传过来了,由于把关键的 save 改成false 操作把它注释掉了,所以它就没过滤,所有的都是 true,就没有做任何过滤,而现在把它打开,只要匹配上了,就把它转改成 false,false 返回就要用 filter,调用 filter 直接就把它过滤掉了。

就是说把它打开以后,html,js,css,png, jpg,这些都会被过滤掉,也就这里面肯定没有 ao,规则当中是没有ao,没有 ao 就应该能把其保留下来。保存一下,然后来重新执行一下程序,没有报错再把爬虫跑起来。

看一下数据,只有 query.ao 有两条数据,因为爬虫当中,规则是爬虫周期是一秒钟跑一次,而迭代的周期是两秒钟,两秒钟迭代一次,而后面的爬虫是一秒钟一个数据,每个批次就两条数据。也能够看到数据的过滤已经生效了。

这个就是数据清洗的过程,没有用的数据就把它过滤掉了。

在数据过滤的时候加了一个标记,最初里面是 true,而第一次读取过来的时候是 true,更新完了以后,把它改成false,现在它应该是变成 false 了,因为跑过两遍了。

刷新一下这个数据 Reload Value。刚刚是 true,然后现在变成了 false,规则更新也生效了。这个就是反发生项目的数据清洗的实现的详细过程。


二、关键代码补充

1、读取 kafka 中的数据到预处理程序中。

2、读取 mysql 数据库当中的规则

var filterRuleList: ArrayBuffer [str

ing]=AnalyzeRu1eDB . queryFilterRule()

读取数据库规则的代码:

3、加载到广播变量

读取数据:

Gvolatile var broadcastFilterRuleList=sc.broadcast

(filterRuleList)

4、在 redis 里面添加规则

判断是否需要更新数据过滤规则:

val NeedUpDateFilterRule=redis . get

("NeedUpDateFilterRule")

5.1、若不需要更新,那么直接过滤数据

5.2、若需要更新,重新读取数据库规则:

filterRuleList=AnalyzeRuleDB. queryFilterRule()

5.2.1、将广播变量清空:

broadcastFilterRuleList.unpersist()

5.2.2将新规则加载到广播变量:

broadcastFilterRuleList= sc .broadcast (filterRuleList)

5.2.3、将 reais 数据改为 false:

redis. set ("NeedUpDateFilterRule", "false")

6、进行数据过滤

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

URLFilter. filterURL ()

6.2、截取出 URL

6.3、遍历数据过滤规则,与 url 进行匹配

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

message.split("ICS#")(1) else ""

6.4、若匹配成功,需要删除,返回 false

6.5、若匹配不成功,不需要删除,返回 true

var save=true

for (rule<-FilterRuleList){

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

if (request .matches(ru1e)){

//将标记改为false

Save=false

}

}

6.6、调用rdd的filter进行数据过滤

val

filteredData=rdd. filter (message=>URLFilter.filterURL

(message , broadcastFilterRulelist.value))

这个就是反爬虫项目的一个具体的实现的思路,目标、实现的思路以及关键代码,关键代码如上。反爬虫的数据的清洗工作就做完了。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
【机器学习】数据清洗之处理缺失点
【机器学习】数据清洗之处理缺失点
114 1
|
8月前
|
数据采集 存储 数据挖掘
数据挖掘(2.3)--数据预处理
通常这个过程牵涉到数据架构的集成,处理属性值冲突,处理数据冗余性,对数据进行转化等的处理过程。
76 0
|
1月前
|
数据采集 监控 安全
数据预处理
【2月更文挑战第25天】
|
2天前
|
数据采集 监控 数据挖掘
数据清洗
【6月更文挑战第21天】数据清洗。
12 5
|
1月前
|
机器学习/深度学习 数据采集 算法
DataFrame 与机器学习:数据预处理与特征工程
【5月更文挑战第19天】数据预处理(如处理缺失值、标准化)和特征工程对机器学习模型的性能至关重要。使用`pandas`进行缺失值填充,`StandardScaler`实现数据标准化,通过创建新特征(如从日期提取月份、对数变换价格)和特征组合增强信息。相关性分析帮助选择重要特征,提升模型准确性和泛化能力。灵活运用这些方法能有效提升模型性能。DataFrame简化了数据操作,助力高效机器学习。
36 1
|
1月前
|
数据采集 监控 数据挖掘
提高数据清洗效果的关键
【4月更文挑战第2天】提高数据清洗效果的关键
23 2
|
1月前
|
数据采集 Python
数据清洗是数据预处理的重要步骤
数据清洗是数据预处理的重要步骤
28 0
|
8月前
|
数据采集 存储 数据挖掘
数据挖掘(2.1)--数据预处理
数据对象(一条记录、一个实体、一个案例、一个样本等)是对一个事物或者物理对象的描述。 数据对象的属性则是这个对象的性质或特征,例如一个人的肤色、眼球颜色等是这个人的属性。
83 0
|
8月前
|
数据采集 数据挖掘 数据中心
数据挖掘(2.2)--数据预处理
描述数据的方法,包括描述数据中心趋势的方法如均值、中位数,描述数据的分散程度的方法如方差、标准差,以及数据的其他描述方法如散点图和参数化方法等。
62 0
|
9月前
|
分布式计算 大数据 Hadoop
大数据预处理
大数据预处理
71 0