暑假周总结2
本周的主要任务是继续推进大型数据库技术大作业,重点完成网络数据采集的学习,并开始编写 MapReduce 数据清洗程序。相比第一周主要学习环境和理论知识,这一周开始真正接触项目中的数据,因此遇到的问题明显增加,但对整个大数据处理流程也有了更加具体的认识。
首先是数据采集部分。我学习了基本的网络爬虫工作流程,包括发送 HTTP 请求、获取网页内容、解析 HTML、提取需要的字段以及将结果保存到文件中。开始时我使用比较简单的方法对网页结构进行分析,重点关注标题、发布时间、正文、来源等信息。在实际尝试之后发现,网页中的数据并不像想象中那样整齐,有些页面字段完整,有些页面可能缺少时间或者正文中包含很多换行、HTML 标签和无关字符。因此采集下来的原始数据还不能直接用于分析,这也正好对应了后面的“数据清洗”步骤。
为了后续处理,我把采集的数据按照相对固定的字段保存,例如编号、标题、正文、时间、来源等。虽然现在的数据量还不算特别大,但我已经开始考虑以后热词项目中的数据格式,尽量保证不同来源的数据最终都可以转成统一结构。
MapReduce 是本周学习的重点。我重新理解了 Mapper、Reducer、Driver 三部分程序之间的关系。Mapper 主要负责把原始输入转成中间键值对,Reducer 对相同 Key 的数据进行汇总,而 Driver 负责配置整个任务。为了先掌握基本流程,我从经典的 WordCount 开始练习,然后再尝试修改成适合文本数据清洗的程序。
在信件数据清洗中,我尝试完成几个简单操作,包括去掉无效空行、删除部分 HTML 标签、去除多余空格、过滤字段不完整的数据,以及简单处理重复内容。刚开始写 MapReduce 时最大的问题是对输入输出格式理解不够清楚,经常不知道当前 Mapper 接收到的一行到底是什么内容。有一次输出数据出现字段错位,我花了很长时间才发现是原始文本中本身包含分隔符,导致使用 split() 后字段数量发生变化。后来改成限制分割次数,并在程序中增加字段数量判断,问题才基本解决。
本周学习时间大约 21 小时,其中大数据理论和 MapReduce 学习大约 7 小时,爬虫和数据采集代码大约 5 小时,MapReduce 编码和测试大约 6 小时,排查数据格式和运行错误大约 3 小时。相比上一周,实际写代码的时间明显增加。
Redis 方面本周继续练习了 String、Hash 和 List。通过命令行操作后,对 Redis 的 key-value 存储方式更加熟悉。我还简单了解了缓存穿透、缓存击穿和缓存雪崩几个面试中经常出现的概念,不过暂时还只是知道基本含义。
后端就业路线方面,我整理了一下接下来的学习顺序,准备按照 Java 基础、MySQL、Redis、Spring、Spring MVC、MyBatis、Spring Boot、Linux、Git、计算机网络和操作系统等内容逐步复习,而不是只跟着视频无目的地学习。
下周准备重点学习 Hive,把清洗后的数据上传到 HDFS,然后创建 Hive 表进行查询分析。同时继续完善 MapReduce 清洗逻辑,尽可能让数据格式更加规范,为后面的统计分析做准备。

浙公网安备 33010602011771号