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

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

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

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

相关文章
|
Java Windows 数据可视化
数据导入与预处理-第7章-数据清理工具OpenRefine
数据导入与预处理-第7章-数据清理工具OpenRefine
|
Web App开发
Mac 技术篇-触控板双指前进后退手势设置方法,mac关闭chrome浏览器双指返回手势实例演示
Mac 技术篇-触控板双指前进后退手势设置方法,mac关闭chrome浏览器双指返回手势实例演示
2528 0
Mac 技术篇-触控板双指前进后退手势设置方法,mac关闭chrome浏览器双指返回手势实例演示
|
存储 SQL 运维
涨姿势 | 一文读懂备受大厂青睐的ClickHouse高性能列存核心原理
本文尝试解读ClickHouse存储层的设计与实现,剖析它的性能奥妙
3945 0
涨姿势 | 一文读懂备受大厂青睐的ClickHouse高性能列存核心原理
|
4月前
|
运维 监控 安全
一文讲清质量管理5M1E分析法的底层逻辑
本文介绍了质量管理中的5M1E分析法,即从人、机、料、法、环、测六个方面系统分析质量波动原因,并提供具体管理方法与实操要点。通过整体联动与闭环管控,帮助企业实现质量管理的系统化与高效化,提升产品质量与稳定性。
|
10月前
|
人工智能
RAG - 拒识模块
在RAG(Retrieval-Augmented Generation)模型中,拒识模块(或称为拒绝模块,Reject Module)是一个重要的组成部分,旨在提高生成模型在面对不相关查询或信息时的鲁棒性。RAG模型结合了检索和生成两种能力,通过在生成过程中引入外部文档来增强生成的质量和准确性。
585 2
|
Linux
Linux - Centos 8 执行 yum makecache fast 报错:yum makecache: error: argument timer: invalid choice: 'fast' (choose from 'timer')
Linux - Centos 8 执行 yum makecache fast 报错:yum makecache: error: argument timer: invalid choice: 'fast' (choose from 'timer')
1305 0
|
机器学习/深度学习 资源调度 自然语言处理
长短时记忆网络(LSTM)完整实战:从理论到PyTorch实战演示
长短时记忆网络(LSTM)完整实战:从理论到PyTorch实战演示
17881 0
|
NoSQL Go API
简洁、轻量级的 Go API 框架
简洁、轻量级的 Go API 框架
234 0
|
机器学习/深度学习 数据采集 自然语言处理
基于机器学习的网络安全威胁检测系统
【5月更文挑战第29天】 在数字化时代,网络安全已成为一个不容忽视的问题。传统的安全防御手段往往依赖人工规则和特征匹配,难以应对日益复杂多变的网络攻击行为。本文提出了一个基于机器学习的网络安全威胁检测系统,旨在通过智能算法提高威胁识别的准确性和效率。系统利用先进的数据挖掘技术从大量网络流量中自动提取特征,并通过训练深度学习模型来识别潜在的安全威胁。本研究的创新点在于融合了自然语言处理(NLP)技术,以解析和理解网络攻击的语言模式,从而增强系统的检测能力。实验结果表明,该系统能够有效识别多种类型的网络攻击,包括钓鱼、恶意软件传播及先进持续性威胁(APT)。
|
数据采集 监控 前端开发
数据预处理总结—用例及流程|学习笔记
快速学习数据预处理总结—用例及流程
1672 0
数据预处理总结—用例及流程|学习笔记