数据预处理-数据清洗需求分析|学习笔记

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习数据预处理-数据清洗需求分析

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

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


数据预处理-数据清洗需求分析


主要内容:

一、课程计划

二、数据清洗模块

三、需求

四、设计


一、课程计划

前面已经把第二阶段处理完了,接下来进入第三阶段,现在来看一下第三阶段的课程计划。第三个阶段和第四个阶段都是为了实现数据处理的预处理阶段,需要处理十个模块,从链路统计,清洗,脱敏,拆分到监控。

image.png

而第三阶段要实现到数据解析模块,历史爬虫结构化数据推送系统监控放在第四阶段,第三阶段要实现的就是数据清洗,脱敏,拆分,分类和解析。


二、数据清洗模块

接下来是数据清洗,这个数据清洗是第三阶段的第一个模块,是数据预处理的第二个模块,前面的链路统计已经做完了,数据清洗的目标是数据中含有 HTML 、CSS、 js 、JPG、 png 等无用的数据,为使预处理更高效,需将无用的数据过滤掉,只保留有效的数据。

来看一下流程,

image.png

第一步是采集数据,采集数据的格式为:

image.png

然后再把它集中在 kafka 中,其中夹杂着很多业务需求文件,那这个 Request 很有可能是 HTML 、CSS 这些没有用的数据,也有可能是爬虫中的 quryao,目标就是把这些没有用的数据过滤掉来提高效率。而其中有用的数据就是spider queryao,要把这些数据保留下来,实现这个目标。也就是数据中有很多情况,要把无用的数据过来掉。要怎样实现这个过程?首先要看一下需求,里面夹杂着许多静态文件,要把这些数据过滤掉。然后数据库中已经存储了过滤规则,过滤规则存储在过滤数据表里面。过滤规则表:itcast_filter_rule

image.png

过滤数据表已经明确的标识了 id、type 和 value,value 里是正则表达式 html、js、css、jpg、png、gif,type 右键查看,指的是零是黑名单,一是白名单,而这个表里面全都是零,也就是全都是黑名单,也是要过滤掉的数据,这个过滤数据就是企业内部 web 界面,里面 MySQL 里面的规则。


三、需求

看流程图,首先把过滤的数据读过来了,3-1把数据读取过来,3-2是接下来要做的事情,然后就要把过滤的规则读取过来,然后进行过滤,看程序代码,现在是每隔两秒钟过滤一次,也就是说两秒钟拿到一个数据。而要对数据过来,就要先拿到规则。现在有六个 value,但可能会更新了,增加了。那要怎么尽快地知道数据里面是否有更新?如果数据库里的数据更新了,就要在每一个批次里面去判断数据是否有更新,在数据迭代之前,先判断规则是否有更新,如果有更新就重新读取,没有更新就继续往下走,所以在数据没两秒钟循环一次地时候,需要判断规则是否有更新,也就是说每两秒钟就要到规则表中看是否有更新,如果有更新就重新读取规则,然后用新的规则来计算数据。MySQL 数据库没有操作问题也不大,但是不太合理,那就把是否有更新的数据放到 redis 里面去,把 redis 的优势发挥出来,能提高效率。如果 MySQL 里面的规则有更新,就把 red is 的标识改为 TRUE,然后数据预处理的程序每隔两秒钟访问 redis。我们需要根据过滤规则进行数据过滤,后期需要设置到界面控制,实现数据库和 red is 标记同步这句话相呼应。也就是需要在 redis 中添加标记,标记他表示数据库里的规则是否需要更新,如果做了更新就把 redis 里的标记改成 TRUE,那预处理程序每隔2秒执行一次,每执行一次就判断 redis 中对否更新,如果有更新就重新读取MySQL 数据库。

//5、消费数据

KafKaValue.ForeachRDD(rdd=>{

数据库只有在更新时才会读取一次。


四、设计

首先要在 sc 初始化后读取 kafka 数据,然后需要根据数据库的规则,并且设置到广播变量中,因为数据和规则读取过来以后,生产方式是一个集群,集群跨结点,要让所有的节点都读到这个规则,就要把它放到广播变量中。再往后读取 kafka 数据进行处理时,业务上线后会一直进行业务计算,在这期间可能过滤规则会发生改变,所以需要根据red is 中的标记来决定是否更新过滤规则,在每处理一批数据都需要查看 red is 标识决定是否更新规则。如果需要更新就更新,不需要更新就跳过,读取和更新规则后,根据规则过滤 kafka 中的数据,只保留 query 相关的 URL, js等信息过滤掉,也就是没有匹配上的数据都保留下来。过滤规则表:itcast_filter_rule

以上就是数据的过滤目标以及需求和设计。

相关文章
|
7月前
|
数据采集 Python
数据清洗是数据预处理的重要步骤
数据清洗是数据预处理的重要步骤
103 0
|
7月前
|
数据采集 存储 自然语言处理
【数据挖掘】数据清洗、数据集成、数据标准化的详解(超详细 附源码)
【数据挖掘】数据清洗、数据集成、数据标准化的详解(超详细 附源码)
609 0
|
数据采集 数据可视化 安全
|
数据采集 消息中间件 分布式计算
数据预处理-数据清洗-实现思路|学习笔记
快速学习数据预处理-数据清洗-实现思路
213 0
数据预处理-数据清洗-实现思路|学习笔记
|
数据采集 机器学习/深度学习 测试技术
机器学习测试笔记(6)——数据清洗和准备(上)
机器学习测试笔记(6)——数据清洗和准备(上)
81 0
|
机器学习/深度学习 数据采集 监控
机器学习测试笔记(6)——数据清洗和准备(下)
机器学习测试笔记(6)——数据清洗和准备(下)
107 0
|
数据采集 监控 前端开发
数据预处理总结—用例及流程|学习笔记
快速学习数据预处理总结—用例及流程
971 0
数据预处理总结—用例及流程|学习笔记
|
数据采集 消息中间件 监控
数据预处理模块梳理|学习笔记
快速学习数据预处理模块梳理
385 0
数据预处理模块梳理|学习笔记
|
数据采集 大数据 开发者
数据预处理—数据清洗—数据过滤功能代码|学习笔记
快速学习数据预处理—数据清洗—数据过滤功能代码
358 0
数据预处理—数据清洗—数据过滤功能代码|学习笔记
|
数据采集 消息中间件 前端开发
数据预处理流程详解|学习笔记
快速学习数据预处理流程详解
数据预处理流程详解|学习笔记