数据预处理-数据解析-总结及预定数据分析|学习笔记

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
全局流量管理 GTM,标准版 1个月
简介: 快速学习数据预处理-数据解析-总结及预定数据分析

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

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


数据预处理-数据解析-总结及预定数据分析


内容介绍:

一、课前小结

二、预定类数据解析介绍


一、课前小结

上节课学习了查询型的解析。所以进行总结。

第一个,读取数据库的规则。代码如下:

var queryRule = AnalyzeRuleDB.queryRule(behaviorType = 0)

然后就是加载到广播变量。下面是解析规则的代码:

@volatile var broadcastQueryRules=sc.brocast(queryRule)

加载到广播变量以后就是去判断它是否需要更新,判断是否需要更新的代码很长,所以这里不做展示。

接下来就是进行解析,下面是解析的代码,也就是解析的规则:

val queryRequestData =

AnalyzeRequest.analyzeQueryRequest( requestType,

requestMethod,contentType,requestUrl,requestBody,travelType, broadcastQueryRules.value)

至于数据解析的代码,因为有很多。这样就实现查询型的数据解析工作。


二、预定类数据解析介绍

其实预定的解析思路跟查询型的解析思路一模一样,只不过读取预定的数据到程序里面来的时候,behaviortype 的参数为1,1代表预定

var bookRule=AnalyzeRuleDB.queryRule(behaviorType = 1)

如果这个参数是1,看下面这行代码:

val sql: String = "select * from analyzerule where

behavior_type =" + behaviorType

那么变量就是1,所以在数据库当中要把 behavior_type 是1的查出来,看下图发现,这里有三个数据:

image.png

把它们查出来,这些就是预定类的数据。然后要对这三条数据的每一个字段,查出来再进行封装,封装完后返回到如下代码所示位置。

//读取数据库内的数据解析规则到预处理程序(将表内的所有查询规则数据全部读取到程序内)

//数据解析规则--查询类

var queryRule=AnalyzeRulgDB.queryRule(0)

@volatile var broadcastQueryRules=sc.broadcast(queryRule)

//数据解析规则--预定类

var bookRule=AnalyzeRuleDB.queryRule(1)

@volatile var

broadcastBookRules=sc.broadcast(bookRule)

然后添加到广播变量:

@volatile var broadcastBookRules=sc.broadcast(bookRule)

添加到广播变量后依然需要更新,这里面是也是用 NeedUpDataAnalyzeRule ,代码跟查询类一模一样,不过预定类用的是 book ,behaviortype是1,在这里面预定的数据也要进行重新读取,然后重新清空广播变量,重新载入过滤数据。

代码://环判断是否需要更新

val

needupDataAnalyzeRule=redis.get("NeedupDataAnalyzeRule")

//如果获取的数据是非空的,并且这个值是 true, 那么就进行数据的更新操作

if( !needupDataAnalyzeRule.isEmpty&&

needupDataAnalyzeRule.toBoolean){

//重新读取 mysql 的数据

queryRule=AnalyzeRuleDe.queryRule( behaviorType =0)

bookRule=AnalyzeRuleDB.queryRule( behaviorType = 1)

//清空广播变量中的数据

broadcastQueryRules.unpersist()

broadcastBookRules.unpersist()

//重新载入新的过滤数据

broadcastQueryRules=sc.broadcast(queryRule)

broadcastBookRules=sc.broadcast( bookRule)

//更新完毕后,将 Redis 中的 true  改成 false

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

}

最后一步就是解析。实际上预定的解析和查询的解析是一模一样的,而且思路也是一样的,预定数据的实现的目标是解析出预定数据当中的出发地,目的地和起飞时间。但是在这里,由于我们拿不到数据,所以这个就暂时做不了,但是虽然这个解析没有数据,最差的就是解析都是空,但是还是要解析一下,因为后面的计算也许会用到,不管是预定类的数据还是查询类的,都有可能。

所以把这个也解析一下,解析思路包括处理流程都是一样的,解析规则的代码直接写在下面:

val bookRequestData =  AnalyzeBookRequest.analyzeBookRequest(requestType,requestMethod, contentType, requestUrl, requestBody,

travelType,broadcastBookRules.value)

那这个就是去解析预定类数据的过程,之前查询类解析的时候有一个 analyzeRequest,而预定类解析里面有一个

analyzebookRequest ,它们的参数都是一样的。这两个的位置都在提供的 business process 里面。

预定类的里面实际上思路和查询类的思路是一模一样的。它的数据解析代码也是已经写好了的,大约在100行左右。下面就是解析预定数据的部分代码:

image.png

这里面需要的参数,在下面的代码里就能找到:

val bookRequestData =  AnalyzeBookRequest.analyzeBookRequest(requestType,requestMethod, contentType, requestUrl, requestBody,

travelType,broadcastBookRules.value)

所以把参数都传递进来,进来以后进行解析,解析完成也能解析出:出发地和目的地,因为没有数据,所以看不到效果,但这个过程必须要有。这个就是预定类的解析过程的过程。因为首先没有数据,看不到效果,第二,读取规则,加载到广播变量,判断是否需要更新,前面已经进行了学习,所以这里快速通过。以上就是预定类的数据解析。

相关文章
|
1月前
|
数据挖掘 PyTorch TensorFlow
|
14天前
数据解析之xpath 太6了
数据解析之xpath 太6了
|
18天前
|
存储 弹性计算 缓存
阿里云服务器ECS通用型实例规格族特点、适用场景、指标数据解析
阿里云服务器ECS提供了多种通用型实例规格族,每种规格族都针对不同的计算需求、存储性能、网络吞吐量和安全特性进行了优化。以下是对存储增强通用型实例规格族g8ise、通用型实例规格族g8a、通用型实例规格族g8y、存储增强通用型实例规格族g7se、通用型实例规格族g7等所有通用型实例规格族的详细解析,包括它们的核心特点、适用场景、实例规格及具体指标数据,以供参考。
阿里云服务器ECS通用型实例规格族特点、适用场景、指标数据解析
|
10天前
|
消息中间件 canal 关系型数据库
Maxwell:binlog 解析器,轻松同步 MySQL 数据
Maxwell:binlog 解析器,轻松同步 MySQL 数据
82 11
|
2天前
|
前端开发 Python
解析数据的Beautiful Soup 模块(二)
解析数据的Beautiful Soup 模块(二)
10 1
|
16天前
|
数据采集 存储 JavaScript
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!
|
1月前
|
数据采集 存储 JavaScript
如何使用Cheerio与jsdom解析复杂的HTML结构进行数据提取
在现代网页开发中,复杂的HTML结构给爬虫技术带来挑战。传统的解析库难以应对,而Cheerio和jsdom在Node.js环境下提供了强大工具。本文探讨如何在复杂HTML结构中精确提取数据,结合代理IP、cookie、user-agent设置及多线程技术,提升数据采集的效率和准确性。通过具体示例代码,展示如何使用Cheerio和jsdom解析HTML,并进行数据归类和统计。这种方法适用于处理大量分类数据的爬虫任务,帮助开发者轻松实现高效的数据提取。
如何使用Cheerio与jsdom解析复杂的HTML结构进行数据提取
|
24天前
|
存储 关系型数据库 MySQL
技术解析:MySQL中取最新一条重复数据的方法
以上提供的两种方法都可以有效地从MySQL数据库中提取每个类别最新的重复数据。选择哪种方法取决于具体的使用场景和MySQL版本。子查询加分组的方法兼容性更好,适用于所有版本的MySQL;而窗口函数方法代码更简洁,执行效率可能更高,但需要MySQL 8.0及以上版本。在实际应用中,应根据数据量大小、查询性能需求以及MySQL版本等因素综合考虑,选择最合适的实现方案。
123 6
|
2天前
|
消息中间件 监控 关系型数据库
MySQL数据实时同步到Elasticsearch:技术深度解析与实践分享
在当今的数据驱动时代,实时数据同步成为许多应用系统的核心需求之一。MySQL作为关系型数据库的代表,以其强大的事务处理能力和数据完整性保障,广泛应用于各种业务场景中。然而,随着数据量的增长和查询复杂度的提升,单一依赖MySQL进行高效的数据检索和分析变得日益困难。这时,Elasticsearch(简称ES)以其卓越的搜索性能、灵活的数据模式以及强大的可扩展性,成为处理复杂查询需求的理想选择。本文将深入探讨MySQL数据实时同步到Elasticsearch的技术实现与最佳实践。
17 0
|
2天前
|
XML 数据格式 开发者
解析数据的Beautiful Soup 模块(一)
解析数据的Beautiful Soup 模块(一)
16 0

热门文章

最新文章

推荐镜像

更多