开发者学堂课程【大数据实战项目 - 反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第六阶段:爬虫识别-准备离线计算数据】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/674/detail/11734
爬虫识别-准备离线计算数据
内容介绍:
一、黑名单 Redis 数据恢复
二、存储规则计算结果 RDD 到 HDFS
一、黑名单 Redis 数据恢复
黑名单数据从 HDFS 恢复到 Redis 这个过程,这个项目里面实际上是有数据的备份和恢复的过程。先做备份,如果有丢失的就做恢复。
二、存储规则计算结果 RDD 到 HDFS
主要是做离线分析的
1、实际上数据采集和数据预处理、实时计算都做好了,但是第七步、第八步、第九步都没有做,第七部是剔除,第八步是做数据的读取写到HDFS 里面,主要数据来源于第四步数据预处理写到Kafka 集群,5-1 进行爬虫识别,这里面要将5-1里面读取过来的原始数据直接原封不动,直接写在HDFS 里面,用来做离线报表的支撑。写到HDFS后再去做离线计算,也就是第九步,计算出来的结构写到Mysql 里面,离线计算就做完了。
2、存储规则计算结果RDD 到 HDFS+ 实时计算性能监控
将经过预处理的数据写入HDFS,为离线分析准备数据。
3、需求
将计算结果Rdd 存储到HDFS,便于后期做离线统计报表使用,此功能需要打包到线上运行,因为本地的local模式会在本地hiveContent环境,而本地并没有。
4、KafkaValue 要做重点强调,回到前面八个指标用到的数据是processedData,这个processedData 是从kafkadatas 里面把数据读过来,然后获取value,value就是我数据真正的值,然后将value转化成了processedData,这个 里面就是processedData 的类型,而现在做离线分析不要processedData类型,要的是原始数据,要#cs#拼接的那个,不要你封装好的那个,所以离线分析要在这个数据上拿,不经过任何处理,读过来直接给我,所以计算结果数据RDD到HDFS 就要原始数据,遍历出每一条数据。
5、Data 然后 SimpleDateFormat 然后按照年月日时的格式来把当前系统时间按按照年月日时的格式来进行格式化,格式化好了以后,data拿到了以后.replacce斜杠、空转换成int,也就是说把年月日时这个格式字符串把斜线换成了一个空,转换成了一个int类型。然后这就是一个大的int,这个 int 用来干嘛,这里有个path,path里面去读取了配置文件读取写进去的路径,路径拿到以后,后面加了一个ITcast又加了年月日时,他就没有斜线了,然后这是一个路径,现在路径有了,接下来就是sc.textFile 要写数据了,数据写在前面拼好这个路径,加一个part-00000,然后将数据与他们的关系对应起来,然后numPartitions一下,做一个分区,然后.saveAsTextFile保存这个路径。
6、这个就是我们将数据写入到HDFS的过程。
也就是说从总体流程来看,5-1读取过来的数据什么都不操作,直接把它写到HDFS 里面,这就是第八步,写到这里就已经为离线分析准备好了数据。
7、把数据预处理跑起来,爬虫也跑起来,然后把数据计算也就是爬虫识别跑起来,没有报错就回到路径里面来,在刷新一下这个界面,(1)就会出现为离线分析准备的数据都放在ITcast这个里面
(2)然后 ITcast 里面有一个年月日时的目录
(3)在点进去就有一个 part-00000 ,part-0000 里面就是数据。
它是一个 processedData ,用逗号拼接的。我们调用的是用#cs#分隔的。
(4)点击 part-00000
(5)点击进入之后,点击 Download
(6)显示出下图界面
(7)然后下载,点击确定
(8)下载完成后,打开
(9)点击进入part-00000,用notepad++
打开
(10)前面是null,后面#CS#拼接post等好多数据
这个就是前面预处理的结果打到kafka, 5-1从kafka读取过来后直接写到HDFS ,然后我们下载到本地看了一下就是这些前面预处理后的结果。只不过爬虫比较单一,数据也都是假的,看到的数据特别规整,但是实际生产的数据可能不是特别规整的,什么样的都有。
8、代码是实时运行的,可以看数据量增加了没有、
(1)可以看到数据现在是55.27KB
(2)刷新之后 134.65KB
这个就是数据写到 HDFS 的过程。后续进行离线计算的数据就有了。
规则匹配和打分并进行阈值判断
剔除非黑名单数据
黑名单数据去重
黑名单 Redis 数据恢复
黑名单数据备份到 Redis
黑名单数据实时存储 hdfs,用于 Redis 数据恢复
存储规则计算结果 RDD 到 HDFS
以上都做了,第六阶段结束。