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

简介: 快速学习数据预处理-数据清洗-效果与总结

开发者学堂课程【大数据实战项目:反爬虫系统(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))

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

相关文章
|
人工智能 自然语言处理 算法
人工智能与创意写作:未来文学的新篇章
本文探讨了人工智能在创意写作领域的应用及其对传统文学创作的影响。通过分析AI技术如何辅助作者生成文本、提升创作效率以及开拓新的文学形式,我们揭示了AI与人类作家之间的协作关系,并讨论了这种合作对未来文学作品风格和内容的可能影响。同时,文章也考虑了AI技术在文学创作中可能带来的挑战和伦理问题,为读者提供了关于科技与艺术融合的深入思考。
704 11
|
测试技术 Android开发 开发者
移动应用开发之旅:从新手到专家
【10月更文挑战第9天】本文将引导你走进移动应用开发的世界,无论你是初学者还是有经验的开发者,都能在这篇文章中找到有价值的信息。我们将从基础的移动操作系统开始,逐步深入到移动应用开发的各个方面,包括设计、开发、测试和发布等。最后,我们还将分享一些实用的技巧和最佳实践,帮助你提升移动应用开发的技能。让我们一起踏上这场充满挑战和乐趣的旅程吧!
|
数据采集 搜索推荐 数据挖掘
通过CRM系统洞察客户喜好,实现精准客户培育
在竞争激烈的市场中,企业需通过精准培育提升客户忠诚度和价值。CRM系统助力企业在客户生命周期各阶段进行精准培育,提高满意度与忠诚度,实现长期业务增长。本文探讨如何利用CRM洞察客户喜好,涵盖策略制定、实施步骤及案例分析。通过数据收集整合、客户细分画像、个性化沟通互动、内容营销教育及忠诚度计划等手段,企业能更好地理解客户需求,制定个性化培育策略,最终实现客户价值最大化。
|
Python Linux Ubuntu
Linux系统部署Python语言开发运行环境
Linux系统部署Python语言开发运行环境
659 0
Linux系统部署Python语言开发运行环境
|
数据挖掘
SPSS多元方差分析
SPSS多元方差分析
405 0
|
Ubuntu 关系型数据库 MySQL
|
索引
关于叶老师一个RR模式下UPDATE锁范围扩大案例的研究
原创转载请注明出处有误请指出 一、前言 叶金荣老师分享了一篇文章如下:https://mp.weixin.qq.com/s/09DJCyMq8kBn4mlezgzUgg 这里只研究下锁的模式,借用叶老师的表和语句 my...
1093 0

热门文章

最新文章