开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第三阶段):数据预处理-航线类型操作类型-更新规则】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/671/detail/11655
数据预处理-航线类型操作类型-更新规则
内容介绍:
一、概述
二、更新规则的具体流程
一、概述
现在已经把数据的规则读取过了,即四种业务场景的规则已经读取完毕,流程中完成了读取数据分类规则到程序里,并添加到了广播变量中,接下需要在 redis 里面添加一个是否需要更新的标识,完成每一次的读取,每一次读取的标识需要放在 redis 里面,判断它是否需要分类。
二、更新规则的具体流程
1.到 redis 读取是否需要更新的标记
规则读取完毕后,属于第一次程序初始化阶段。在进行不断迭代的时候,需要判断四种情况的规则有没有发生变化,并进行说明和标记,依然需要利用 redis 到数据库。redis 实例:redis.get(),其中的 key 值可以在讲义中拷贝,代码为:redis.set( "NeedUpDateFilterRule" , "false")
,读取到 redis 是否需要更新的标记
读取过后添加接收,代码为:
val
NeedupDateclassifyRule=redis.get("NeedupDateclassifyRule)
2.判断是否需要更新,若数据不为空并且数据转化成 Boolean 为 true 表示需要更新
这是第二次详细地演示如何读取更新规则,之后再遇到这种情况快速写过,如果读取过来的数据不能是空的,如果它不是空的,并且这个数据转化成布尔形式后为 true,就表示它需要更新,则依然可用。代码为:
if(INeedupDateFilterRule.isEmpty &&
NeedupDateFilterRule.toBoolean)
{
- 而如果已经表明了需要更新,则需要在数据库当中重新读取新的
四种业务规则到程序中,代码为:
RuleMaps=AnalyzeRuleDB.queryRuleMapo
- 将广播变量进行清空
RuleMaps=AnalyzeRuleDB.queryRuleMap()
- 将新的分类规则重新加载到广播变量
broadcastRuleMaps.unpersist()
- 将redis内是否需要更新规则的标识改为 false
broadcastRuleMaps=sc.broadcast(RuleMaps)
上述完成了把数据库里的规则读取到程序中,同时加载了广播变量,并且在 redis 里加了标记判断是否需要更新的流程。
3.将"NeedupDateclassifyRule"加到 redis 中
这个时候还没将"NeedupDateclassifyRule"加到 redis 中,选中并加载到 redis 里,找一个端口然后添加一个新的key,key 即为"NeedupDateclassifyRule"值,value 改为 false,默认情况下不需要更新。加完以后它读过的值是false,然后转化成 Boolean 变成 false,false 就不会继续下面的程序代码,直接跳过。
上面就是添加到广播变量并且判断它是否需要更新的实践。